模塊和模塊化.ppt_第1頁(yè)
模塊和模塊化.ppt_第2頁(yè)
模塊和模塊化.ppt_第3頁(yè)
模塊和模塊化.ppt_第4頁(yè)
模塊和模塊化.ppt_第5頁(yè)
已閱讀5頁(yè),還剩46頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、概要設(shè)計(jì)的表示形式,正文加工系統(tǒng)的層次圖,帶編號(hào)的層次圖( HIPO ) 與層次圖( H )中每個(gè)方框相對(duì)應(yīng)(按編號(hào)),都有一張IPO圖描述該框代表的模塊的處理過(guò)程,稱為HIPO圖。,IPO圖的一個(gè)例子,軟件的模塊結(jié)構(gòu)圖:,描述一個(gè)軟件系統(tǒng)由哪些模塊組成,以及模塊之間的調(diào)用關(guān)系 結(jié)構(gòu)圖的基本成分有:模塊、調(diào)用和數(shù)據(jù),模塊是指具有一定功能并可以用模塊名調(diào)用的一組程序語(yǔ)句,如函數(shù)、子程序等,它們是組成程序的基本單元 一個(gè)模塊具有其外部特征和內(nèi)部特征 外部特征包括:模塊的接口(模塊名、輸入/輸出參數(shù)、返回值等)和模塊的功能 內(nèi)部特征包括:模塊的內(nèi)部數(shù)據(jù)和完成其功能的程序代碼 在結(jié)構(gòu)圖中,模塊用矩形框

2、表示,每個(gè)模塊都有一個(gè)應(yīng)能適當(dāng)反映該模塊功能的名字,調(diào)用(call):用從一個(gè)模塊指向另一個(gè)模塊的箭頭來(lái)表示,其含義是前者調(diào)用了后者 為了方便,有時(shí)常用直線替代箭頭,此時(shí),表示位于上方的模塊調(diào)用位于下方的模塊 數(shù)據(jù)(data):模塊調(diào)用時(shí)需傳遞的參數(shù)可通過(guò)在調(diào)用箭頭旁附加一個(gè)小箭頭和數(shù)據(jù)名來(lái)表示,其中小箭頭的方向是數(shù)據(jù)的傳輸方向,SC圖的模塊調(diào)用,簡(jiǎn)單調(diào)用,簡(jiǎn)單調(diào)用的兩種表示法,B,(a),X,Y,Z,A,C,Z,B,(b),1,A,C,2,選擇調(diào)用,A,B,C,D,注意:圖中必須畫出數(shù)據(jù)流,循環(huán)調(diào)用,A,B,C,注意:圖中必須畫出數(shù)據(jù)流,結(jié)構(gòu)圖的幾個(gè)概念 深度:程序結(jié)構(gòu)圖中控制的層數(shù),例如圖

3、中所示的結(jié)構(gòu)圖的深度是5 寬度:程序結(jié)構(gòu)圖中同一層次上模塊總數(shù)的最大值,例如圖中所示的結(jié)構(gòu)圖的寬度為7 扇出(fan out):該模塊直接調(diào)用的模塊數(shù)目。例如,例如圖中模塊M的扇出是4,模塊A的是2,模塊B的扇出是1 扇入(fan in):能直接調(diào)用該模塊的模塊數(shù)目。例如圖中模塊G的扇入是1,模塊I的扇入是2,模塊R的扇入是4,深度和寬度在一定程度上反映了程序的規(guī)模和復(fù)雜程度 相對(duì)而言,如果程序結(jié)構(gòu)圖的深度和寬度較大,則說(shuō)明程序的規(guī)模和復(fù)雜程度都較大。 模塊的扇入扇出會(huì)影響結(jié)構(gòu)圖的深度和寬度,例如減少模塊的扇出,可能導(dǎo)致寬度變小而深度增加 一個(gè)模塊的扇出過(guò)大通常意味著該模塊比較復(fù)雜,然而扇出太

4、少,可能導(dǎo)致深度的增加 一般情況,一個(gè)模塊的扇出以39為宜 一個(gè)模塊的扇入表示有多少模塊可直接調(diào)用它,它反映了該模塊的復(fù)用(reuse)程度,因此模塊的扇入越大越好,模塊和模塊化,模塊化:當(dāng)系統(tǒng)的每項(xiàng)功能恰好由一個(gè)輸入輸出都明確定義的組件完成的時(shí)候,我們稱這個(gè)系統(tǒng)模塊化。 模塊表示能夠用計(jì)算機(jī)程序代碼實(shí)現(xiàn)的,相對(duì)獨(dú)立的單一數(shù)據(jù)處理功能,所以模塊有時(shí)也叫功能模塊。 進(jìn)一步明確模塊是擁有明確定義的輸入、輸出和特性的程序?qū)嶓w。,設(shè)計(jì)方法的選擇,應(yīng)該允許不同的設(shè)計(jì)者使用他們喜歡的技巧,只要他們的文檔能讓其他設(shè)計(jì)者明白就可以了。 設(shè)計(jì)方法的選擇又是取決于設(shè)計(jì)者的偏好,而更多的時(shí)候取決于系統(tǒng)要求的結(jié)構(gòu)或數(shù)

5、據(jù)。,軟件設(shè)計(jì)中涉及的問(wèn)題,抽象(abstract)與細(xì)化(refinement) 抽象:分層次考慮和處理問(wèn)題(數(shù)據(jù)和過(guò)程) 細(xì)化:從高到低的逐步分解過(guò)程 信息隱藏 對(duì)其它模塊隱藏模塊內(nèi)部的數(shù)據(jù)和過(guò)程,抽象,抽象是對(duì)具體對(duì)象(問(wèn)題)進(jìn)行概括,抽出這一類對(duì)象的公共性質(zhì)并加以描述的過(guò)程。 先注意問(wèn)題的本質(zhì)及描述,其次是實(shí)現(xiàn)過(guò)程或細(xì)節(jié)。 數(shù)據(jù)抽象:描述某類對(duì)象的屬性或狀態(tài)(對(duì)象相互區(qū)別的物理量)。 代碼抽象:描述某類對(duì)象的共有的行為特征或具有的功能。 抽象的實(shí)現(xiàn):通過(guò)類的聲明。,模塊化設(shè)計(jì)的好處,信息隱藏 從不同角度了解系統(tǒng) 將難以解決的問(wèn)題獨(dú)立出來(lái);抽象層次通過(guò)逐層分析來(lái)了解問(wèn)題 允許不同的模塊采

6、用不同的設(shè)計(jì)方法,模塊化設(shè)計(jì),把大型軟件按照規(guī)定的原則劃分成一個(gè)個(gè)較小的、相對(duì)獨(dú)立但又相互關(guān)聯(lián)的模塊 重要指導(dǎo)思想: 分解 模塊獨(dú)立性,分解(Decomposition),模塊化是為了使一個(gè)復(fù)雜的大型程序能被人的智力所管理 設(shè)函數(shù)c(x)定義問(wèn)題x的復(fù)雜程度,函數(shù)E(X)確定解決問(wèn)題x需要的工作量(時(shí)間)。對(duì)于兩個(gè)問(wèn)題P1 和P2,如果,顯然,模塊化的依據(jù),人類解決一般問(wèn)題時(shí)一個(gè)有趣的規(guī)律: C (P1+P2)C (P1)+C (P2) E (P1+P2)E (P1)+E (P2) 結(jié)論:各個(gè)擊破把復(fù)雜的問(wèn)題分解成容易解決的小問(wèn)題,原來(lái)的問(wèn)題也就容易解決了,問(wèn)題提出,如果無(wú)限的分割軟件,最后為

7、了開(kāi)發(fā)軟件而需要的工作量也就小得可以忽略了。 ?,模塊數(shù)與開(kāi)發(fā)工作量的關(guān)系,模塊劃分的基本原則,概括了把軟件劃分為模塊時(shí)要遵守的準(zhǔn)則,也是判斷模塊構(gòu)造是不是合理的標(biāo)準(zhǔn)。 但是到目前為止,沒(méi)有統(tǒng)一的標(biāo)準(zhǔn)判斷一個(gè)系統(tǒng)化分成幾個(gè)模塊是最優(yōu)的。,模塊劃分的四項(xiàng)基本原則,1.模塊獨(dú)立性強(qiáng) 塊內(nèi)聯(lián)系強(qiáng) 塊間聯(lián)系弱 2.高內(nèi)聚 模塊內(nèi)部各成分之間 3.低耦合 一個(gè)模塊與其它模塊之間 4.公共(共享)模塊 多個(gè)模塊公用,模塊獨(dú)立性,問(wèn)什么模塊的獨(dú)立性很重要? 有效模塊化的軟件容易開(kāi)發(fā)出來(lái) 獨(dú)立的模塊比較容易測(cè)試和維護(hù) 人的獨(dú)立性強(qiáng)如何? 人沒(méi)有獨(dú)立性,什么都依賴別人如何?,內(nèi)聚,內(nèi)聚是模塊功能強(qiáng)度(一個(gè)模塊內(nèi)

8、部各個(gè)元素彼此結(jié)合的緊密程度)的度量。一個(gè)模塊內(nèi)部各個(gè)元素之間的聯(lián)系越緊密,則它的內(nèi)聚性就越高,相對(duì)地,它與其他模塊之間的耦合就會(huì)減低,而模塊獨(dú)立性就越強(qiáng)。,內(nèi)聚與耦合,內(nèi)聚和耦合是相互關(guān)聯(lián)的。在程序結(jié)構(gòu)中各模塊的內(nèi)聚程度越高,模塊間的耦合程度就越低。但這也不是絕對(duì)的。軟件概要設(shè)計(jì)的目標(biāo)是力求增加模塊的內(nèi)聚,盡量減少模塊間的耦合,但增加內(nèi)聚比減少耦合更重要,應(yīng)當(dāng)把更多的注意力集中到提高模塊的內(nèi)聚程度上來(lái)。,內(nèi)聚, ,弱 強(qiáng),低內(nèi)聚中內(nèi)聚高內(nèi)聚,低內(nèi)聚,.偶然性內(nèi)聚 模塊內(nèi)各部分沒(méi)有聯(lián)系,或者即使有聯(lián)系,這種聯(lián)系也很松散。 .邏輯性內(nèi)聚 這種模塊把幾種相關(guān)的功能組合在一起,每次調(diào)用時(shí),由傳送給模

9、塊的判定參數(shù)來(lái)確定該模塊應(yīng)執(zhí)行哪一種功能。這種模塊是單入口的多功能模塊。類似的有錯(cuò)誤處理模塊。它接受出錯(cuò)信號(hào),對(duì)不同類型的錯(cuò)誤打印出不同的出錯(cuò)信息。,低內(nèi)聚,.時(shí)間性內(nèi)聚 時(shí)間內(nèi)聚又稱為經(jīng)典內(nèi)聚。這種模塊大多為多功能模塊,但模塊的各個(gè)功能執(zhí)行與時(shí)間有關(guān),通常要求所有功能必須在同一時(shí)間段內(nèi)執(zhí)行。例如初始化模塊和終止模塊。,中內(nèi)聚,.過(guò)程性內(nèi)聚 如果一個(gè)模塊內(nèi)的處理是相關(guān)的,而且必須以特定次序執(zhí)行,則稱這個(gè)模塊為過(guò)程內(nèi)聚模塊。 .通訊性內(nèi)聚 如果一個(gè)模塊內(nèi)各功能部分都使用了相同的輸入數(shù)據(jù),或產(chǎn)生了相同的輸出數(shù)據(jù),則稱之為通信內(nèi)聚模塊。,高內(nèi)聚,.順序性內(nèi)聚 如果一個(gè)模塊內(nèi)的處理元素和同一個(gè)功能密切

10、相關(guān),而且這些處理必須順序執(zhí)行(通常一個(gè)處理元素的輸出數(shù)據(jù)作為下一個(gè)處理元素的輸入數(shù)據(jù)) .功能性內(nèi)聚 一個(gè)模塊中各個(gè)部分都是某一具體功能必不可少的組成部分,或者說(shuō)該模塊中所有部分都是為了完成一項(xiàng)具體功能而協(xié)同工作,緊密聯(lián)系,不可分割的。則稱該模塊為功能內(nèi)聚模塊。,七種內(nèi)聚的優(yōu)劣評(píng)分,功能內(nèi)聚 10分 順序內(nèi)聚 9分 通信內(nèi)聚 7分 過(guò)程內(nèi)聚 5分 時(shí)間內(nèi)聚 3分 邏輯內(nèi)聚 1分 偶然內(nèi)聚 0分,高內(nèi)聚,低內(nèi)聚,邏輯內(nèi)聚模塊,判斷,調(diào)用模塊,讀,一,個(gè),記,錄,寫,一,個(gè),記,錄,被,調(diào),用,模,塊,常見(jiàn)內(nèi)聚類型,常見(jiàn)內(nèi)聚類型,耦 合,對(duì)一個(gè)軟件結(jié)構(gòu)內(nèi)不同模塊之間互連程度的度量。耦合強(qiáng)弱取決于

11、模塊間接口的復(fù)雜程度、調(diào)用模塊的方式以及哪些信息通過(guò)接口。 在軟件設(shè)計(jì)中應(yīng)該追求盡可能松散耦合的系統(tǒng),耦合的七種類型(低高),非直接耦合:如果兩個(gè)模塊之間沒(méi)有直接關(guān)系,它們之間的聯(lián)系完全是通過(guò)主要模塊的控制和調(diào)用來(lái)實(shí)現(xiàn)的,這就是非直接耦合。 數(shù)據(jù)耦合:如果一個(gè)模塊訪問(wèn)另一個(gè)模塊時(shí),彼此之間是通過(guò)數(shù)據(jù)參數(shù)(不是控制參數(shù)、公共數(shù)據(jù)結(jié)構(gòu)或外部變量)來(lái)交換輸入、輸出信息的,則稱這種耦合為數(shù)據(jù)耦合。 標(biāo)記耦合 :如果一組模塊通過(guò)參數(shù)表傳遞記錄信息,就是標(biāo)記耦合。事實(shí)上,這組模塊共享了這個(gè)記錄,它是某一類數(shù)據(jù)結(jié)構(gòu)的子結(jié)構(gòu),而不是簡(jiǎn)單變量。這要求這些模塊都必須清楚該紀(jì)錄的結(jié)構(gòu),并按結(jié)構(gòu)要求對(duì)此記錄進(jìn)行操作。

12、,耦合的七種類型(續(xù)),控制耦合 :如果一個(gè)模塊通過(guò)傳遞開(kāi)關(guān)、標(biāo)志、名字等控制信息,明顯的控制選擇另一模塊的功能,就是控制耦合。 外部耦合 :一組模塊都訪問(wèn)同一全局簡(jiǎn)單變量而不是同一全局?jǐn)?shù)據(jù)結(jié)構(gòu),而且不是通過(guò)參數(shù)表傳遞該全局變量的信息,則稱之為外部耦合。 公共耦合 :若一組模塊都訪問(wèn)同一個(gè)公共數(shù)據(jù)環(huán)境,則它們之間的耦合稱為公共耦合。公共的數(shù)據(jù)環(huán)境可以是全局?jǐn)?shù)據(jù)結(jié)構(gòu)、共享的通信區(qū)、內(nèi)存的公共覆蓋區(qū)等。,弱耦合,公共耦合,公共耦合,公共耦合會(huì)引起下列問(wèn)題: 1、 所有公共耦合模塊都于某一個(gè)公共數(shù)據(jù) 環(huán)境內(nèi)部各項(xiàng)的物理安排有關(guān),若修改某個(gè)數(shù)據(jù)的大小,將會(huì)影響到所有的模塊。 2、無(wú)法控制各個(gè)模塊對(duì)公共

13、數(shù)據(jù)的存取,嚴(yán)重影響軟件模塊的可靠性和適應(yīng)性。 3、公共數(shù)據(jù)名的使用,明顯降低了程序的可讀性。,內(nèi)容耦合,如果出現(xiàn)下列情況之一,兩個(gè)模塊間就發(fā)生了內(nèi)容耦合: 一個(gè)模塊訪問(wèn)另一個(gè)模塊的內(nèi)部數(shù)據(jù) 一個(gè)模塊不通過(guò)正常入口而轉(zhuǎn)到另一個(gè)模塊的內(nèi)部 兩個(gè)模塊有一部分程序代碼重疊(只可能出現(xiàn)在匯編程序中) 一個(gè)模塊有多個(gè)入口(這意味著一個(gè)模塊有幾種功能),內(nèi)容耦合,(a)進(jìn)入另一模塊內(nèi)部,(b)模塊代碼重疊,(c)多入口模塊,內(nèi)容耦合 0分 公共耦合 1分 外部耦合 3分 控制耦合 5分 特征耦合 7分 數(shù)據(jù)耦合 9分 非直接耦合 10分,高耦合,低耦合,七種耦合的優(yōu)劣評(píng)分,關(guān)于耦合的設(shè)計(jì)原則,盡量使用數(shù)據(jù)(特征)耦合 少用控制耦合 限制公共環(huán)境耦合的范圍 完全不用內(nèi)容耦合,建立公共(共享)模塊,建立公共模塊的目的是減少冗余,減少不必要的重復(fù)工作,劃出某項(xiàng)功能成為一個(gè)能被幾個(gè)模塊共同利用的模塊。

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 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ì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論