四、軟件結(jié)構(gòu)的優(yōu)化準則
首先應(yīng)學(xué)會用圖形表示軟件結(jié)構(gòu),軟件結(jié)構(gòu)圖反映了整個系統(tǒng)的功能實現(xiàn),即將來編好程序中的控制層次體系。軟件結(jié)構(gòu)往往用樹狀或網(wǎng)狀結(jié)構(gòu)的圖形來表示。
請大家對照課本的解釋來看軟件結(jié)構(gòu)圖包括哪些內(nèi)容。
我們已經(jīng)知道了軟件概要設(shè)計的主要任務(wù)就是軟件結(jié)構(gòu)的設(shè)計,為了提高設(shè)計的質(zhì)量,可以根據(jù)下面的設(shè)計優(yōu)化準則進行優(yōu)化:在這些準則中,都是針對模塊及模塊間關(guān)系來提出的。
1、模塊的劃分:要做到高內(nèi)聚,低耦合,保持相對獨立性。
2、模塊的控制:模塊的作用范圍要在他的控制范圍內(nèi),判定所在的模塊應(yīng)與受其影響的模塊在層次上盡量靠近)
3、形成的結(jié)構(gòu);軟件結(jié)構(gòu)的深度、寬度、扇出、扇入要適當
4、模塊的大小: 要適中。
5、模塊的接口:模塊的接口要簡單、清晰、含義明確,便于理解、易于實現(xiàn)、測試與維護)。
五、概要設(shè)計的設(shè)計方法。
(一)面向數(shù)據(jù)流的設(shè)計方法(這是需要我們熟練掌握的方法)
面向數(shù)據(jù)流的設(shè)計方法是以需求階段產(chǎn)生的數(shù)據(jù)流圖為基礎(chǔ),按一定的步驟映射成軟件結(jié)構(gòu),因此又稱為結(jié)構(gòu)化設(shè)計(Structured Design SD)。這是目前使用最廣泛的軟件設(shè)計方法之一,應(yīng)該熟練掌握它。
1、首先要研究數(shù)據(jù)流圖(DFD)的類型,無論何種軟件系統(tǒng),DFD一般都可分為變換型和事務(wù)型兩類。(課本第51頁)
先來看變換型數(shù)據(jù)流圖,顧名思義,變換就是把輸入的數(shù)據(jù)處理后變成另外的數(shù)據(jù)輸出,所以變換型數(shù)據(jù)的工作過程就是三步:取得數(shù)據(jù)、變換數(shù)據(jù)和輸出數(shù)據(jù)。在圖4-6中,可以看到兩股數(shù)據(jù)流經(jīng)過交換中心變成一股數(shù)據(jù)流進行輸出。虛線為標出的流界。
再來看事務(wù)型數(shù)據(jù)流圖,所謂事務(wù)也是一個處理,但不是數(shù)據(jù)變換,而是將輸入數(shù)據(jù)流分離成許多發(fā)散的數(shù)據(jù)流,形成許多加工路徑,并根據(jù)值選擇其中一個路徑來執(zhí)行。舉個例子,好比有一個郵件分發(fā)中心,把收進的郵件根據(jù)其發(fā)送地址進行分流,有的用飛機郵送,有的用汽車來運輸?shù)鹊取?/P>
在大型軟件系統(tǒng)中的DFD數(shù)據(jù)流圖中,這兩種類型特征都有可能存在。
2、SD方法設(shè)計過程
1)精化DFD。
2)確定DFD類型并進行相應(yīng)的映射。
3)分解上層模塊,設(shè)計中下層模塊結(jié)構(gòu)
4)根據(jù)優(yōu)化準則對軟件結(jié)構(gòu)求精。
5)描述模塊功能、接口及全局數(shù)據(jù)結(jié)構(gòu)
6)復(fù)查,如果有錯則轉(zhuǎn)向2)修改完善,否則進入詳細設(shè)計。
下面我們通過例子來說明變換分析設(shè)計和事務(wù)分析設(shè)計方法。
3、變換分析設(shè)計
以課本53頁圖4-8為例說明變換分析設(shè)計。
根據(jù)面向數(shù)據(jù)流的設(shè)計方法,第一步是精化DFD,也就是研究分析這個數(shù)據(jù)流圖,我們可以看到圖中從A到H的數(shù)據(jù)流向和加工,圖形比較簡單。
第二步是確定DFD類型并確定加工中心,在這里已經(jīng)說明為本圖為變換型,在實際分析中應(yīng)該根據(jù)每個相關(guān)操作來確定其類型。在圖中,我們可以直觀地看到中間幾股數(shù)據(jù)流的匯合處是系統(tǒng)的變換中心。也可以通過雙向?qū)ふ曳▉泶_定,左邊是物理輸入端,從f1沿著單向路徑一直到f3,后面的f4是從C流出的,同時C還有f5流出,則可見f4,f5不能再看作是系統(tǒng)的輸入,因此可確定f4,f5前一個數(shù)據(jù)流f3就是系統(tǒng)的邏輯輸入,同樣,我們從右邊的物理輸出端往左邊沿數(shù)據(jù)流的反向?qū)ふ,可以發(fā)現(xiàn)f4,f6不能看作是整個系統(tǒng)的輸出,因此可以確定f7,f8是邏輯輸出端,然后在這兩個分界處添上虛線,這樣,DFD的三部份就確定了。
第三步 設(shè)計軟件結(jié)構(gòu)的頂層和第一層,根據(jù)變換中心可以對應(yīng)得到主模塊的位置,就可以畫出頂層模塊(即主模塊,在實際應(yīng)用中,這個模塊的名字就是系統(tǒng)的名字,如銷售管理系統(tǒng)等)。然后在這個模塊下方根據(jù)劃分好的三個部分畫出三個功能模塊,即輸入、變換和輸出模塊,就是圖中的get f3,將f3變換成f7和f8模塊,put f7及put f8模塊,注意,這里應(yīng)當為每個輸入和輸出設(shè)計一個模塊。然后將這些模塊與頂層模塊用連線連上表示所屬控制。畫上相應(yīng)的數(shù)據(jù)傳送箭頭。
第四步 分解上層模塊,設(shè)計中下層模塊。 根據(jù)上面的方法,分解輸入模塊,圖中的get f3模塊的功能是向主模塊提供數(shù)據(jù),而在DFD中可以看到f3是數(shù)據(jù)流f2經(jīng)過B操作后流出的,因此這里有兩個部分,就是接收f2數(shù)據(jù),再通過B轉(zhuǎn)換流出。所以在get f3模塊下畫出兩個子模塊 get f2 和B操作模塊。
就這樣一一分解,可以畫出所有的輸入和輸出子模塊,直到物理輸入和輸出為止。
對于變換中心的下屬模塊,根據(jù)數(shù)據(jù)流和變換操作,以每個基本加工建立一個功能模塊,可以畫出CDE三個子模塊。
整個過程并不復(fù)雜,畫好后根據(jù)實際情況對軟件結(jié)構(gòu)進行優(yōu)化,也就是進行必要的合并或分解。以求設(shè)計出高內(nèi)聚低耦合的模塊組成的、具有良好特性的軟件結(jié)構(gòu)。
4、事務(wù)分析設(shè)計,可以參見圖4-9為例。其設(shè)計方法大同小異,首先確定DFD類型,這里已指明是事務(wù)型,然后找出DFD中的事務(wù)中心和加式路徑。當DFD中時不要弄錯,然后在分解子模塊時在調(diào)度模塊上加一個菱形符號表示判斷處理。
5、綜合型數(shù)據(jù)流圖與分層數(shù)據(jù)流圖映射成軟件結(jié)構(gòu)的設(shè)計
有了上面的基礎(chǔ),對綜合型的數(shù)據(jù)流圖也可以一一分開來進行設(shè)計了。
6、設(shè)計后的處理,在軟件結(jié)構(gòu)形成之后,我們知道,概要設(shè)計的基本任務(wù)還有文檔的編寫,在這個階段就是要編寫一些文檔,包括:
(1)為每個模塊寫一份處理說明
(2)為每個模塊提供一份接口說明
(3)數(shù)據(jù)結(jié)構(gòu)說明
(4)給出設(shè)計約束或限制
(5)進行概要評審
(6)設(shè)計優(yōu)化。
本節(jié)介紹的設(shè)計方法是本章的重點,要求熟練掌握。
(二)基于IDEF0圖的設(shè)計方法
(三)表示軟件結(jié)構(gòu)圖的另一種圖形工具--HIPO圖。
HIPO圖清晰易讀,主要用于編寫概要設(shè)計文檔中的說明。
本章小結(jié):根據(jù)上面的學(xué)習(xí),我們可以知道,軟件概要設(shè)計的四個主要任務(wù),知道評價軟件結(jié)構(gòu)設(shè)計質(zhì)量的原理和兩個標準即軟件模塊的耦合性及內(nèi)聚性,根據(jù)這些原理提出了軟件結(jié)構(gòu)設(shè)計的優(yōu)化準則,并且詳細學(xué)習(xí)了軟件結(jié)構(gòu)的面向數(shù)據(jù)流圖的設(shè)計方法。
相關(guān)推薦:2010年下半年軟考試題及答案解析匯總北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內(nèi)蒙古 |