大型軟件工程開(kāi)發(fā)中結(jié)構(gòu)化的設(shè)計(jì)方法

2013-08-30 14:20 來(lái)源:電子信息網(wǎng) 作者:鈴鐺

軟件工程的基本思想是面對(duì)復(fù)雜的問(wèn)題,讓軟件的開(kāi)發(fā)按照工程的概念、原理、技術(shù)和方法模式來(lái)實(shí)施,有計(jì)劃地按照要求分階段實(shí)現(xiàn)。針對(duì)大型項(xiàng)目開(kāi)發(fā),為了保證軟件產(chǎn)品質(zhì)量,提高軟件開(kāi)發(fā)效率,在進(jìn)行詳細(xì)設(shè)計(jì)、程序設(shè)計(jì)之前,必須先確定軟件總體結(jié)構(gòu)。軟件總體結(jié)構(gòu)設(shè)計(jì)的方法主要有結(jié)構(gòu)化設(shè)計(jì)、面向數(shù)據(jù)結(jié)構(gòu)的設(shè)計(jì)和面向?qū)ο蟮脑O(shè)計(jì),其中結(jié)構(gòu)化設(shè)計(jì)方法是應(yīng)用最廣泛的一種,它是建立良好程序結(jié)構(gòu)的方法,提出了衡量模塊質(zhì)量的標(biāo)準(zhǔn)是“高內(nèi)聚、低耦合”。另外,結(jié)構(gòu)化設(shè)計(jì)(StructuredDesign,SD)方法是一種面向過(guò)程的設(shè)計(jì)方法或面向數(shù)據(jù)流的設(shè)計(jì)方法,它可以與結(jié)構(gòu)化分析(StructuredAnalysis,SA)方法、結(jié)構(gòu)化程序設(shè)計(jì)(StructuredProgramming)方法前后呼應(yīng),形成了統(tǒng)一、完整的系列化方法。結(jié)構(gòu)化設(shè)計(jì)方法以需求分析階段獲得的數(shù)據(jù)流圖為基礎(chǔ),通過(guò)一系列映射,把數(shù)據(jù)流圖變換為軟件結(jié)構(gòu)圖。

1數(shù)據(jù)流的類型

在需求分析階段,用SA方法產(chǎn)生了數(shù)據(jù)流圖。結(jié)構(gòu)化的設(shè)計(jì)能方便地將數(shù)據(jù)流圖(DataFlowDiagram,DFD)轉(zhuǎn)換成軟件結(jié)構(gòu)圖。DFD中從系統(tǒng)的輸入數(shù)據(jù)流到系統(tǒng)的輸出數(shù)據(jù)流的一連串連續(xù)變換形成了一條信息流。根據(jù)數(shù)據(jù)流類型不同,可分為變換型和事務(wù)型2類,事務(wù)型和變換型數(shù)據(jù)流的設(shè)計(jì)步驟基本是大同小異,它們之間主要差別就是從數(shù)據(jù)流圖到軟件結(jié)構(gòu)的映射方法不同。因此,在進(jìn)行軟件結(jié)構(gòu)設(shè)計(jì)時(shí),首先對(duì)數(shù)據(jù)流圖進(jìn)行分析,然后判斷屬于那一種類型,根據(jù)不同的數(shù)據(jù)流類型,通過(guò)一系列映射,把數(shù)據(jù)流程圖轉(zhuǎn)換為軟件結(jié)構(gòu)圖?;玖鞒桃?jiàn)圖1.

1.1變換型數(shù)據(jù)流

信息在沿著輸入通路進(jìn)入系統(tǒng),同時(shí)由外部形式變換成內(nèi)部形式進(jìn)入系統(tǒng)的信息,通過(guò)變換中心經(jīng)加工處理,以后再沿著輸出通路變換成外部形式離開(kāi)系統(tǒng)。當(dāng)數(shù)據(jù)流具有了信息流的這種特征時(shí)這種信息流就叫作變換型數(shù)據(jù)流。變換型數(shù)據(jù)流的DFD可明顯地分為三大部分:邏輯輸入、變換中心(主加工)、邏輯輸出。變換型數(shù)據(jù)流結(jié)構(gòu)見(jiàn)圖2.邏輯輸入:可以從數(shù)據(jù)流圖上的物理輸入開(kāi)始,一步一步向系統(tǒng)中間移動(dòng),一直到數(shù)據(jù)流不再被看作是系統(tǒng)的輸入為止,則其前一個(gè)數(shù)據(jù)流就是系統(tǒng)的邏輯輸入??梢哉J(rèn)為邏輯輸入就是離物理輸入端最遠(yuǎn)的,且仍被看作是系統(tǒng)輸入的數(shù)據(jù)流。變換中心:多股數(shù)據(jù)流匯集的地方往往是系統(tǒng)的中心變換部分。

邏輯輸出:從物理輸出端開(kāi)始,一步一步地向系統(tǒng)中間移動(dòng),就可以找到離物理輸出端最遠(yuǎn),且仍被看作是系統(tǒng)輸出的數(shù)據(jù)流。

01


圖1數(shù)據(jù)流程圖轉(zhuǎn)換為軟件結(jié)構(gòu)圖基本流程

02


圖2變換型數(shù)據(jù)流結(jié)構(gòu)

1.2事務(wù)型數(shù)據(jù)流

信息在沿著輸入通路進(jìn)入系統(tǒng),由外部形成內(nèi)部形式后到達(dá)事務(wù)中心。通常事務(wù)中心位于幾條處理路徑的起點(diǎn),從數(shù)據(jù)流程圖上很容易標(biāo)識(shí)出來(lái),因?yàn)槭聞?wù)處理中心一般會(huì)有“發(fā)射中心”的特征。因?yàn)槭聞?wù)流有明顯的事務(wù)中心,所以各式各樣活動(dòng)流都以事務(wù)中心為起點(diǎn)呈輻射狀流出。事務(wù)型數(shù)據(jù)流結(jié)構(gòu)見(jiàn)圖3.

03


圖3事務(wù)型數(shù)據(jù)流結(jié)構(gòu)

事務(wù)中心主要完成下述任務(wù):接收輸入數(shù)據(jù)(輸入數(shù)據(jù)又稱為事務(wù));分析每個(gè)事務(wù)以確定它的類型;根據(jù)事務(wù)類型選取一條活動(dòng)通路。通常,事務(wù)中心前面的部分叫作接收路徑,發(fā)射中心后面各條發(fā)散路徑叫作事務(wù)處理路徑。對(duì)于每條處理路徑來(lái)講,還應(yīng)該確定它們自己的流特征。

2映射過(guò)程

任何一個(gè)設(shè)計(jì)過(guò)程都不是統(tǒng)一、固定不變的,設(shè)計(jì)的要求越高,往往需要設(shè)計(jì)者在方法上不但具有超強(qiáng)的判斷能力還要有規(guī)則性的創(chuàng)造精神。根據(jù)不同類型,分析其映射過(guò)程。

2.1變換型數(shù)據(jù)流到軟件結(jié)構(gòu)圖映射

(1)設(shè)計(jì)軟件結(jié)構(gòu)的頂層和第1層。設(shè)計(jì)一個(gè)主模塊,并用系統(tǒng)的名字為它命名,作為系統(tǒng)的頂層。第1層為每個(gè)邏輯輸入設(shè)計(jì)一個(gè)輸入模塊,它的功能是為主模塊提供數(shù)據(jù);為每一個(gè)邏輯輸出設(shè)計(jì)一個(gè)輸出模塊,它的功能是將主模塊提供的數(shù)據(jù)輸出;為中心變換設(shè)計(jì)一個(gè)變換模塊,它的功能是將邏輯輸入轉(zhuǎn)換成邏輯輸出。主模塊控制和協(xié)調(diào)第1層的輸入模塊、變換模塊和輸出模塊的工作。

(2)設(shè)計(jì)軟件結(jié)構(gòu)的下層結(jié)構(gòu)。每個(gè)邏輯輸入模塊有2個(gè)下屬模塊:一個(gè)接收數(shù)據(jù);另一個(gè)把數(shù)據(jù)變換成上級(jí)模塊所需要的數(shù)據(jù)格式。而接收數(shù)據(jù)模塊又是輸入模塊,又要重復(fù)上述工作。如此循環(huán)下去,直到輸入模塊已經(jīng)涉及到物理輸入端為止。同樣,每個(gè)邏輯輸出模塊有2個(gè)下屬模塊:一個(gè)是將上級(jí)模塊提供的數(shù)據(jù)變換成輸出的形式;另一個(gè)是將它們輸出。對(duì)于每一個(gè)邏輯輸出,在數(shù)據(jù)流程圖上向物理輸出端方向移動(dòng),遇到物理輸出為止。設(shè)計(jì)中心變換模塊的下層模塊沒(méi)有通用的方法,一般應(yīng)參照數(shù)據(jù)流程圖的中心變換部分和功能分解的原則來(lái)考慮如何對(duì)中心變換模塊進(jìn)行分解。

變換型數(shù)據(jù)流轉(zhuǎn)換后的初始軟件結(jié)構(gòu)圖見(jiàn)圖4.

04


圖4變換型數(shù)據(jù)流轉(zhuǎn)換后的初始軟件結(jié)構(gòu)圖

2.2事務(wù)型數(shù)據(jù)流到軟件結(jié)構(gòu)圖映射

事務(wù)型數(shù)據(jù)處理問(wèn)題的工作機(jī)理是接受一項(xiàng)事務(wù),根據(jù)事務(wù)處理的特點(diǎn)和性質(zhì),選擇分派一個(gè)適當(dāng)?shù)奶幚韱卧?,然后給出結(jié)果。

(1)設(shè)計(jì)軟件結(jié)構(gòu)的頂層和第1層。軟件結(jié)構(gòu)圖的頂層是系統(tǒng)的事務(wù)控制模塊。第1層是由事務(wù)流輸入分支和事務(wù)分類處理分支映射得到的程序結(jié)構(gòu)。也就是說(shuō),第1層通常是由兩部分組成:取得事務(wù)和處理事務(wù)。

(2)設(shè)計(jì)軟件結(jié)構(gòu)的下層結(jié)構(gòu)。設(shè)計(jì)事務(wù)流輸入分支的方法與變換分析中輸入流的設(shè)計(jì)方法類似,從事務(wù)中心變換開(kāi)始,沿輸入路徑向物理輸入端移動(dòng)。每個(gè)接收數(shù)據(jù)模塊的功能是向調(diào)用它的上級(jí)模塊提供數(shù)據(jù),它需要有兩個(gè)下屬模塊:一個(gè)接收數(shù)據(jù);另一個(gè)把這些數(shù)據(jù)變換成它的上級(jí)模塊所需要的數(shù)據(jù)格式。接收數(shù)據(jù)模塊又是輸入模塊,也要重復(fù)上述工作。如此循環(huán)下去,直到輸入模塊已經(jīng)涉及到物理輸入端為止。

事務(wù)處理分支結(jié)構(gòu)映射成一個(gè)分類控制模塊,它控制下層的處理模塊。對(duì)每個(gè)事務(wù)建立一個(gè)事務(wù)處理模塊。如果發(fā)現(xiàn)在系統(tǒng)中有類似的事務(wù),就可以把這些類似的事務(wù)組織成一個(gè)公共事務(wù)處理模塊。但是,如果組合后的模塊是低內(nèi)聚的,則應(yīng)該重新考慮組合問(wèn)題。

事務(wù)中心模塊按所接受的事務(wù)的類型,選擇某一個(gè)事務(wù)處理模塊執(zhí)行。每個(gè)事務(wù)處理模塊可能要調(diào)用若干個(gè)操作模塊,而操作模塊又可能調(diào)用若干個(gè)細(xì)節(jié)模塊。不同的事務(wù)處理模塊可以共享一些操作模塊。不同的操作模塊又可以共享一些細(xì)節(jié)模塊。事務(wù)型數(shù)據(jù)流轉(zhuǎn)換后的初始軟件結(jié)構(gòu)圖見(jiàn)圖5.

05


圖5事務(wù)型數(shù)據(jù)流轉(zhuǎn)換后的初始軟件結(jié)構(gòu)圖

1 2 > 
軟件工程 結(jié)構(gòu)化

相關(guān)閱讀

暫無(wú)數(shù)據(jù)

一周熱門(mén)