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

下載本文檔

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

文檔簡介

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

2、和模塊的功能內(nèi)部特征包括:模塊的內(nèi)部數(shù)據(jù)和完成其功能內(nèi)部特征包括:模塊的內(nèi)部數(shù)據(jù)和完成其功能的程序代碼的程序代碼 在結(jié)構(gòu)圖中,模塊用矩形框表示,每個(gè)模塊都有一個(gè)應(yīng)能適當(dāng)反映該模塊功能的名字F調(diào)用(call):用從一個(gè)模塊指向另一個(gè)模塊的箭頭來表示,其含義是前者調(diào)用了后者為了方便,有時(shí)常用直線替代箭頭,此時(shí),表示位于上方的模塊調(diào)用位于下方的模塊F數(shù)據(jù)(data):模塊調(diào)用時(shí)需傳遞的參數(shù)可通過在調(diào)用箭頭旁附加一個(gè)小箭頭和數(shù)據(jù)名來表示,其中小箭頭的方向是數(shù)據(jù)的傳輸方向 SCSC圖的模塊調(diào)用圖的模塊調(diào)用簡單調(diào)用簡單調(diào)用B(a)X,YZACZB(b)1AC2入出X,YZZ 選擇調(diào)用ABCDv注意:圖中必

3、須畫出數(shù)據(jù)流 循環(huán)調(diào)用ABCv注意:圖中必須畫出數(shù)據(jù)流結(jié)構(gòu)圖的幾個(gè)概念F深度:程序結(jié)構(gòu)圖中控制的層數(shù),例如圖中所示的結(jié)構(gòu)圖的深度是5F寬度:程序結(jié)構(gòu)圖中同一層次上模塊總數(shù)的最大值,例如圖中所示的結(jié)構(gòu)圖的寬度為7F扇出(fan out):該模塊直接調(diào)用的模塊數(shù)目。例如,例如圖中模塊M的扇出是4,模塊A的是2,模塊B的扇出是1F扇入(fan in):能直接調(diào)用該模塊的模塊數(shù)目。例如圖中模塊G的扇入是1,模塊I的扇入是2,模塊R的扇入是4 F深度和寬度在一定程度上反映了程序的規(guī)模和復(fù)雜程度相對(duì)而言,如果程序結(jié)構(gòu)圖的深度和寬度較大,則說明程序的規(guī)模和復(fù)雜程度都較大。模塊的扇入扇出會(huì)影響結(jié)構(gòu)圖的深度和寬

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

5、其他設(shè)計(jì)者明白就可以了。F設(shè)計(jì)方法的選擇又是取決于設(shè)計(jì)者的偏好,而更多的時(shí)候取決于系統(tǒng)要求的結(jié)構(gòu)或數(shù)據(jù)。軟件設(shè)計(jì)中涉及的問題F抽象(抽象(abstractabstract)與細(xì)化)與細(xì)化(refinement)(refinement)抽象:分層次考慮和處理問題抽象:分層次考慮和處理問題( (數(shù)據(jù)和過程數(shù)據(jù)和過程) )細(xì)化:從高到低的逐步分解過程細(xì)化:從高到低的逐步分解過程F信息隱藏信息隱藏對(duì)其它模塊隱藏模塊內(nèi)部的數(shù)據(jù)和過程對(duì)其它模塊隱藏模塊內(nèi)部的數(shù)據(jù)和過程抽象F抽象是對(duì)具體對(duì)象(問題)進(jìn)行概括,抽出這一類對(duì)象的公共性質(zhì)并加以描述的過程。先注意問題的本質(zhì)及描述,其次是實(shí)現(xiàn)過程或細(xì)節(jié)。數(shù)據(jù)抽象:描

6、述某類對(duì)象的屬性或狀態(tài)(對(duì)象相互區(qū)別的物理量)。代碼抽象:描述某類對(duì)象的共有的行為特征或具有的功能。抽象的實(shí)現(xiàn):通過類的聲明。模塊化設(shè)計(jì)的好處F信息隱藏信息隱藏F從不同角度了解系統(tǒng)從不同角度了解系統(tǒng)F將難以解決的問題獨(dú)立出來;抽象層次將難以解決的問題獨(dú)立出來;抽象層次通過逐層分析來了解問題通過逐層分析來了解問題F允許不同的模塊采用不同的設(shè)計(jì)方法允許不同的模塊采用不同的設(shè)計(jì)方法模塊化設(shè)計(jì)F把大型軟件按照規(guī)定的原則劃分成一個(gè)個(gè)把大型軟件按照規(guī)定的原則劃分成一個(gè)個(gè)較小的、相對(duì)獨(dú)立但又相互關(guān)聯(lián)的模塊較小的、相對(duì)獨(dú)立但又相互關(guān)聯(lián)的模塊F重要指導(dǎo)思想:重要指導(dǎo)思想:分解分解模塊獨(dú)立性模塊獨(dú)立性分解(Dec

7、omposition)F模塊化是為了使一個(gè)復(fù)雜的大型程序能被人的智力所管理F設(shè)函數(shù)c(x)定義問題x的復(fù)雜程度,函數(shù)E(X)確定解決問題x需要的工作量(時(shí)間)。對(duì)于兩個(gè)問題P1 和P2,如果)()(21PCPC)()(21PEPE顯然模塊化的依據(jù)F人類解決一般問題時(shí)一個(gè)有趣的規(guī)律: C (P1+P2)C (P1)+C (P2) E (P1+P2)E (P1)+E (P2) F結(jié)論:各個(gè)擊破把復(fù)雜的問題分解成容易解決的小問題,原來的問題也就容易解決了問題提出F如果無限的分割軟件,最后為了開發(fā)軟件而需要的工作量也就小得可以忽略了。?模塊數(shù)與開發(fā)工作量的關(guān)系模塊數(shù)接口成本最小成本區(qū)M軟件開發(fā)工作量總

8、成本模塊成本模塊劃分的基本原則F概括了把軟件劃分為模塊時(shí)要遵守的準(zhǔn)則,也是判斷模塊構(gòu)造是不是合理的標(biāo)準(zhǔn)。F但是到目前為止,沒有統(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ú)立性F問什么模塊的獨(dú)立性很重要?有效模塊化的軟件容易開發(fā)出來獨(dú)立的模塊比較容易測試和維護(hù)F人的獨(dú)立性強(qiáng)如何?F人沒有獨(dú)立性,什么都依賴別人如何?內(nèi)聚F內(nèi)聚是模塊功能強(qiáng)度(一個(gè)模塊內(nèi)部各個(gè)元素彼此結(jié)合的緊密程度)的度量。一個(gè)模塊內(nèi)部各個(gè)元素之間的聯(lián)系越緊密,則它的內(nèi)聚性

9、就越高,相對(duì)地,它與其他模塊之間的耦合就會(huì)減低,而模塊獨(dú)立性就越強(qiáng)。 內(nèi)聚與耦合F內(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)聚程度上來。內(nèi)聚 弱 強(qiáng)低內(nèi)聚中內(nèi)聚高內(nèi)聚 低內(nèi)聚F.偶然性內(nèi)聚模塊內(nèi)各部分沒有聯(lián)系,或者即使有聯(lián)系,這種聯(lián)系也很松散。 F.邏輯性內(nèi)聚 這種模塊把幾種相關(guān)的功能組合在一起,每次調(diào)用時(shí),由傳送給模塊的判定參數(shù)來確定該模塊應(yīng)執(zhí)行哪一種功能。這種模塊是單入口的多功能模塊。類似的有錯(cuò)誤處理模塊。它

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

11、塊中各個(gè)部分都是某一具體功能必不可少的組成部分,或者說該模塊中所有部分都是為了完成一項(xiàng)具體功能而協(xié)同工作,緊密聯(lián)系,不可分割的。則稱該模塊為功能內(nèi)聚模塊。 七種內(nèi)聚的優(yōu)劣評(píng)分F功能內(nèi)聚 10分F順序內(nèi)聚 9分F通信內(nèi)聚 7分F過程內(nèi)聚 5分F時(shí)間內(nèi)聚 3分F邏輯內(nèi)聚 1分F偶然內(nèi)聚 0分高內(nèi)聚低內(nèi)聚邏輯模塊 判斷調(diào)用模塊讀一個(gè)記錄寫一個(gè)記錄被調(diào)用模塊常見內(nèi)聚類型常見內(nèi)聚類型耦 合F對(duì)一個(gè)軟件結(jié)構(gòu)內(nèi)不同模塊之間互連程度的度量。耦合強(qiáng)弱取決于模塊間接口的復(fù)雜程度、調(diào)用模塊的方式以及哪些信息通過接口。F在軟件設(shè)計(jì)中應(yīng)該追求盡可能松散耦合的系統(tǒng)耦合的七種類型(低高)F非直接耦合:如果兩個(gè)模塊之間沒有直

12、接關(guān)系,它們之間的聯(lián)系完全是通過主要模塊的控制和調(diào)用來實(shí)現(xiàn)的,這就是非直接耦合。F數(shù)據(jù)耦合:如果一個(gè)模塊訪問另一個(gè)模塊時(shí),彼此之間是通過數(shù)據(jù)參數(shù)(不是控制參數(shù)、公共數(shù)據(jù)結(jié)構(gòu)或外部變量)來交換輸入、輸出信息的,則稱這種耦合為數(shù)據(jù)耦合。F標(biāo)記耦合 :如果一組模塊通過參數(shù)表傳遞記錄信息,就是標(biāo)記耦合。事實(shí)上,這組模塊共享了這個(gè)記錄,它是某一類數(shù)據(jù)結(jié)構(gòu)的子結(jié)構(gòu),而不是簡單變量。這要求這些模塊都必須清楚該紀(jì)錄的結(jié)構(gòu),并按結(jié)構(gòu)要求對(duì)此記錄進(jìn)行操作。 耦合的七種類型(續(xù))F控制耦合 :如果一個(gè)模塊通過傳遞開關(guān)、標(biāo)志、名字等控制信息,明顯的控制選擇另一模塊的功能,就是控制耦合。 F外部耦合 :一組模塊都訪問同

13、一全局簡單變量而不是同一全局?jǐn)?shù)據(jù)結(jié)構(gòu),而且不是通過參數(shù)表傳遞該全局變量的信息,則稱之為外部耦合。 F公共耦合 :若一組模塊都訪問同一個(gè)公共數(shù)據(jù)環(huán)境,則它們之間的耦合稱為公共耦合。公共的數(shù)據(jù)環(huán)境可以是全局?jǐn)?shù)據(jù)結(jié)構(gòu)、共享的通信區(qū)、內(nèi)存的公共覆蓋區(qū)等。弱耦合數(shù)據(jù)耦合非直接耦合模塊模塊2模塊模塊1模塊模塊4模塊模塊3特征耦合(參數(shù)表傳遞數(shù)據(jù)結(jié)構(gòu))公共耦合公共耦合公共耦合會(huì)引起下列問題:1、 所有公共耦合模塊都于某一個(gè)公共數(shù)據(jù) 環(huán)境內(nèi)部各項(xiàng)的物理安排有關(guān),若修改某個(gè)數(shù)據(jù)的大小,將會(huì)影響到所有的模塊。2、無法控制各個(gè)模塊對(duì)公共數(shù)據(jù)的存取,嚴(yán)重影響軟件模塊的可靠性和適應(yīng)性。3、公共數(shù)據(jù)名的使用,明顯降低了程

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

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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)論