1.結(jié)構(gòu)圖
1.1結(jié)構(gòu)圖的基本成分結(jié)構(gòu)圖的基本成分有模塊、調(diào)用和數(shù)據(jù)。結(jié)構(gòu)圖和層次圖基本上是大同小異,主要是用來描繪軟件結(jié)構(gòu)的一種圖形工具,圖中設(shè)有很多方框,一個(gè)方框就代表一個(gè)模塊,框內(nèi)注明模塊的名字或主要功能;方框之間的箭頭(或直線)用來表示模塊的調(diào)用關(guān)系。在通常情況下我們會(huì)在結(jié)構(gòu)圖中用箭頭注釋一下表示模塊在調(diào)用過程中信息的來回傳遞。我們可以根據(jù)箭頭的β部形狀標(biāo)明某種信息,認(rèn)定一種形狀作為一種信息符號(hào),自己只要按箭頭形狀就可以區(qū)分傳遞的信息是數(shù)據(jù)還是控制信息了。比如:β部是空心圓就表示傳遞的是數(shù)據(jù),實(shí)心圓就表示傳遞的是控制信息。
1.2附加符號(hào)結(jié)構(gòu)圖不僅僅只是一些基本符號(hào),其實(shí)還有不少附加符號(hào),它是用來表示模塊的選擇調(diào)用或循環(huán)調(diào)用的。其實(shí),層次圖和結(jié)構(gòu)圖對于模塊調(diào)用次序方面要求的并不嚴(yán)格。再畫模塊方面很多人習(xí)慣按調(diào)用次序從左到右的方法畫模塊,其實(shí)又û有規(guī)定一定要這樣,出于其他方面的考慮(例如為了減少交叉線),我們完全可以不按這種次序畫,還有就是在層次圖和結(jié)構(gòu)圖中并不指明什ô時(shí)候調(diào)用下層模塊。一般情況下上層模塊中除了調(diào)用下層模塊的語句之外還有其他語句,到底是先執(zhí)行調(diào)用下層模塊的語句還是先執(zhí)行其他語句,絲毫不在圖中指明。事實(shí)上,層次圖和結(jié)構(gòu)圖往往只表明一個(gè)模塊用來調(diào)用哪些模塊,對于一些模塊內(nèi)不含其他成分的根本就不作表示。
2.信息流的類型在需求分析階段,用SA方法產(chǎn)生了數(shù)據(jù)流圖。面向數(shù)據(jù)流的設(shè)計(jì)能方便地將數(shù)據(jù)流圖(data flow diagram,DFD)轉(zhuǎn)換成程序結(jié)構(gòu)圖。DFD中從系統(tǒng)的輸入數(shù)據(jù)流到系統(tǒng)的輸出數(shù)據(jù)流的一連串連續(xù)變換形成了一條信息流。DFD的信息流大體可分為兩種類型,就是中心變換流和事務(wù)流。
2.1變換流:信息在沿著輸入通·進(jìn)入系統(tǒng),同時(shí)由外部形式變換成內(nèi)部形式進(jìn)入系統(tǒng)的信息,通過變換中心經(jīng)加工處理,以后再沿著輸出通·的變換成外部形式離開系統(tǒng)。當(dāng)數(shù)據(jù)流具有了信息流的這種特征時(shí)這種信息流就叫做變換流。變換流型的DFD可明顯地分為三大部分輸入、變換(主加工)、輸出。
2.2事務(wù)流:基本系統(tǒng)模型意ζ著變換流,由外部形成內(nèi)部形式后到達(dá)事務(wù)中心。因此,事務(wù)中心可根據(jù)輸入數(shù)據(jù)的類型在若干個(gè)動(dòng)作序列中選出一個(gè)來執(zhí)行,這種信息流稱之為事務(wù)流。因?yàn)槭聞?wù)流有了有明顯的事務(wù)中心,所以各式各樣活動(dòng)流都以事務(wù)中心為起點(diǎn)呈輻射狀流出。事務(wù)中心主要完成下述任務(wù):接收輸入數(shù)據(jù)(輸入數(shù)據(jù)又稱為事務(wù));分析ÿ個(gè)事務(wù)以確定它的類型;根據(jù)事務(wù)類型選取一條活動(dòng)通·。
2.3設(shè)計(jì)過程:我們要懂得任何一個(gè)設(shè)計(jì)過程都不是統(tǒng)一的,固定不變的,設(shè)計(jì)的要求比較高,往往需要在方法上設(shè)計(jì)者不但具有超強(qiáng)的判斷能力還要有規(guī)則性的創(chuàng)造精神。
3.事務(wù)分析我們可以在數(shù)據(jù)流有了一定的事務(wù)特點(diǎn),也就是有一個(gè)明顯的“發(fā)身中心”(事務(wù)中心)時(shí),來設(shè)計(jì)軟件結(jié)構(gòu)但最好還是采用事務(wù)分析的方法比較好,因此,我們在任何情況下都可以使用變換分析方法來設(shè)計(jì)軟件結(jié)構(gòu)。事務(wù)分析的設(shè)計(jì)步驟和變換分析的設(shè)計(jì)步驟基本是大同小異,它們之間主要差別就是從數(shù)據(jù)流圖到軟件結(jié)構(gòu)的映射方法不同。由事務(wù)流映射成軟件結(jié)構(gòu)包括一個(gè)接收分支和一個(gè)發(fā)送分支。也就是說從。抽象到具體地構(gòu)造出軟件的層次結(jié)構(gòu)由事務(wù)中心的邊界開始沿著接收分支流通·的處理映射成模塊,然后調(diào)用模塊來發(fā)送分支結(jié)構(gòu)。并且控制下層的所有活動(dòng)模塊;可以用形式化的方法由數(shù)據(jù)圖映射出軟件結(jié)構(gòu)。事務(wù)分析是從事務(wù)流型DFD導(dǎo)出程序結(jié)構(gòu)圖。
3.1事實(shí)上,事務(wù)中心是由若干條活動(dòng)流組成的?;谑聞?wù)中心和ÿ條活動(dòng)流的流特性,事務(wù)流型DFD在一般形式中無數(shù)條活動(dòng)流都是以其事務(wù)中心為起點(diǎn)成輻射狀地流出。有了活動(dòng)流與事務(wù)之間的相互循環(huán)轉(zhuǎn)變,讓一條事務(wù)流型的DFD由輸入流映射成高層的程序結(jié)構(gòu)。
3.2將事務(wù)流型DFD映射成高層的程序結(jié)構(gòu)。頂層模塊的功能和軟件工程中的結(jié)構(gòu)化設(shè)計(jì)方法整個(gè)系統(tǒng)的功能是一樣的。接收模塊是用來接收輸入數(shù)據(jù)以及接收與它相對應(yīng)的輸入流。而發(fā)送模塊則是一個(gè)調(diào)度模塊,它是用來控制下層的所有活動(dòng)流模塊。ÿ個(gè)活動(dòng)流模塊都有其相對應(yīng)的一條活動(dòng)流,因此在該活動(dòng)流的映照過程中頂層模塊呈現(xiàn)在程序結(jié)構(gòu)圖中。
3.3進(jìn)一步分解。僅過一段時(shí)間的接觸我們了解了接收模塊的分解和變換分析中輸入控制模塊的分解基本上一樣。還有就是ÿ個(gè)活動(dòng)流模塊都是根據(jù)它的流特性(變換流或事務(wù)流)進(jìn)一步采用變換分析或事務(wù)分析進(jìn)行分解。如果對待一個(gè)大系統(tǒng),在通常情況下我們會(huì)把變換分析和事務(wù)分析應(yīng)用到同一個(gè)數(shù)據(jù)流圖的不同部分。因?yàn)椤皹?gòu)件”是由很多子結(jié)構(gòu)形成的,所以我們應(yīng)該利用它們來構(gòu)造完整的軟件結(jié)構(gòu)。事實(shí)上,當(dāng)數(shù)據(jù)流不具有明顯的事務(wù)特點(diǎn)的情況下,我們可以使用變換分析技術(shù)。相反如果具有明顯的事務(wù)中心,就可以采用事務(wù)分析技術(shù)。我們應(yīng)靈活運(yùn)用變換分析和事務(wù)分析這兩種映射規(guī)則。過程中要是有一些不必要或û多大用處的控制模塊我們可以將它們進(jìn)行整合。如果控制模塊的功能過于復(fù)雜,可以將它們分解為多個(gè)或多個(gè)以上的控制模塊,或者在中間增加層次型的控制模塊。