一、軟件結(jié)構(gòu)設(shè)計(jì)概述
數(shù)據(jù)設(shè)計(jì)主要是將實(shí)體關(guān)系轉(zhuǎn)化為文件系統(tǒng)結(jié)構(gòu)以及數(shù)據(jù)庫(kù)表結(jié)構(gòu)。至于體系結(jié)構(gòu)設(shè)計(jì)主要是對(duì)軟件模塊之間的關(guān)系進(jìn)行定義。而接口設(shè)計(jì)則是以數(shù)據(jù)流圖對(duì)系統(tǒng)內(nèi)部中的各種關(guān)系及交互機(jī)制進(jìn)行定義。最后,過(guò)程設(shè)計(jì)則是對(duì)軟件各組成部分的算法以及內(nèi)部數(shù)據(jù)結(jié)構(gòu)確定下來(lái),并采取某種形式對(duì)算法進(jìn)行描述。如果從工程管理這一角度出發(fā)的話,則軟件設(shè)計(jì)則可以分為概要設(shè)計(jì)以及詳細(xì)設(shè)計(jì)這兩部分,其中概要設(shè)計(jì)主要包含軟件需求到軟件體系結(jié)構(gòu)的轉(zhuǎn)換、系統(tǒng)級(jí)接口的確定等。至于詳細(xì)設(shè)計(jì)則是對(duì)每個(gè)模塊的實(shí)現(xiàn)算法以及數(shù)據(jù)結(jié)構(gòu)進(jìn)行確定、采取合理的方法對(duì)算法以及數(shù)據(jù)結(jié)構(gòu)細(xì)節(jié)進(jìn)行表示。
二、結(jié)構(gòu)化設(shè)計(jì)的具體實(shí)施方法
1、結(jié)構(gòu)化設(shè)計(jì)流程
(1)對(duì)數(shù)據(jù)流圖進(jìn)行研究、分析及審查,這主要可以幫助我們從軟件需求規(guī)格說(shuō)明中掌握數(shù)據(jù)流加工過(guò)程。
(2)以數(shù)據(jù)流圖為依據(jù)對(duì)數(shù)據(jù)處理的類型進(jìn)行確定,需要注意的是,針對(duì)事務(wù)型及變換型,我們要對(duì)其進(jìn)行分別分析及處理。
(3)通過(guò)數(shù)據(jù)流圖對(duì)系統(tǒng)初始結(jié)構(gòu)圖進(jìn)行推導(dǎo)。
(4)采取啟發(fā)式原則對(duì)系統(tǒng)初始結(jié)構(gòu)圖進(jìn)行改進(jìn),直到結(jié)構(gòu)圖滿足我們的要求為止。
(5)利用數(shù)據(jù)字典以及分析模型ER圖對(duì)數(shù)據(jù)進(jìn)行設(shè)計(jì),這又包括數(shù)據(jù)文件設(shè)計(jì)以及數(shù)據(jù)庫(kù)設(shè)計(jì)。
(6)以狀態(tài)轉(zhuǎn)換圖、加工規(guī)格說(shuō)明為依據(jù),進(jìn)行過(guò)程設(shè)計(jì)。
2、體系結(jié)構(gòu)設(shè)計(jì)方法
(1)基于數(shù)據(jù)流方法設(shè)計(jì)過(guò)程。這一設(shè)計(jì)方法也被稱之為過(guò)程驅(qū)動(dòng)設(shè)計(jì)方法,在使用這一方法的過(guò)程中,主要是和軟件需求分析階段的SA進(jìn)行銜接,然后將數(shù)據(jù)流圖所表示的信息轉(zhuǎn)化為程序結(jié)構(gòu)設(shè)計(jì)描述。
(2)典型數(shù)據(jù)流及典型系統(tǒng)結(jié)構(gòu)。對(duì)于典型數(shù)據(jù)流類型來(lái)說(shuō)在,主要包括事務(wù)型數(shù)據(jù)流以及變換型數(shù)據(jù)流,在數(shù)據(jù)流的類型存在區(qū)別的時(shí)候,其所獲得的系統(tǒng)結(jié)構(gòu)也會(huì)存在差異。一般來(lái)說(shuō),我們會(huì)把系統(tǒng)中的全部數(shù)據(jù)流認(rèn)作變換流,數(shù)據(jù)沿輸入通道進(jìn)到系統(tǒng)中,經(jīng)歷數(shù)據(jù)變化,把數(shù)據(jù)外部形勢(shì)轉(zhuǎn)變?yōu)閮?nèi)部表示,再利用變化中心進(jìn)行處理,最后沿輸出通道離開(kāi)系統(tǒng),而這種數(shù)據(jù)就被稱之為變換流。不過(guò),在遇到明顯帶有事務(wù)特性數(shù)據(jù)流的時(shí)候,則最好采取事務(wù)型映射方法設(shè)計(jì)。具體來(lái)說(shuō),變換流系統(tǒng)結(jié)構(gòu)圖主要包括了輸入、變換中心以及輸出這三個(gè)部分。至于事務(wù)流,其數(shù)據(jù)則會(huì)沿輸入通道到達(dá)事務(wù)中心,然后事務(wù)中心將以輸入數(shù)據(jù)的類型為依據(jù)選擇一個(gè)動(dòng)作進(jìn)行執(zhí)行,在事務(wù)流中,事務(wù)中心是明顯存在的,各種活動(dòng)流將以事務(wù)中心作為起點(diǎn)按照輻射的形狀流出。
(3)變換映射方法。所謂變換分析,主要是從數(shù)據(jù)流圖中將系統(tǒng)結(jié)構(gòu)圖導(dǎo)出,其具體的步驟為:首先,對(duì)數(shù)據(jù)流圖進(jìn)行重畫(huà);其次,對(duì)有效輸入、有效輸出以及變換中心部分進(jìn)行區(qū)分;第三,進(jìn)行一級(jí)分解及二級(jí)分解。具體來(lái)說(shuō),在對(duì)數(shù)據(jù)流圖進(jìn)行重畫(huà)的過(guò)程中,為建立好系統(tǒng)結(jié)構(gòu),要對(duì)數(shù)據(jù)流圖進(jìn)行平鋪,其中物流輸入在左邊,物理輸出在右邊。至于確定有效輸入、有效輸出以及變換中心的過(guò)程中,則要注意程序的核心功能為變換中心,輸入屬于邏輯輸入流,而輸出屬于邏輯輸出流。而第一級(jí)分級(jí)中,頂層模塊負(fù)責(zé)整個(gè)系統(tǒng)功能,它又可以分為輸入控制模塊、變換控制模塊以及輸出控制模塊。第二級(jí)分解則可以分為輸入控制模塊的分解、輸出模塊的分級(jí)以及有效控制模塊的分解。
(4)事務(wù)型映射方法。在事務(wù)分析的過(guò)程中,其流程也是由數(shù)據(jù)流圖的分析開(kāi)始,從頂?shù)较拢M(jìn)行逐步的分解,最終建立起系統(tǒng)的結(jié)構(gòu)圖。其具體步驟可以總結(jié)為:首先,對(duì)事務(wù)中心以及每條活動(dòng)流流特性進(jìn)行確定;其次,將數(shù)據(jù)流圖映射為高層系統(tǒng)結(jié)構(gòu);第三,進(jìn)行進(jìn)一步的分解,將事務(wù)處理模塊中全面的下層操作模塊確定下來(lái)。
(5)模塊結(jié)構(gòu)改進(jìn)的方法。首先,模塊功能的完善。對(duì)于一個(gè)完整的模塊來(lái)說(shuō),其主要應(yīng)包含以下幾個(gè)部分:對(duì)規(guī)定功能的部分進(jìn)行執(zhí)行;在模塊難以完成規(guī)定功能的時(shí)候,則要對(duì)出錯(cuò)標(biāo)志進(jìn)行回送,在需要的時(shí)候可以將數(shù)據(jù)返回給其調(diào)用者。其次,將重復(fù)內(nèi)容消除,對(duì)軟件結(jié)構(gòu)進(jìn)行改善。具體來(lái)說(shuō),針對(duì)一些結(jié)構(gòu)完全相似的情況,可以使用完全合并的方法。至于局部相似,我們則要找到相同的部分,將其分離出去,然后進(jìn)行一個(gè)獨(dú)立下層模塊的重新定義,當(dāng)然,也可以使其和上級(jí)模塊進(jìn)行合并。第三,對(duì)模塊作用范圍進(jìn)行控制。針對(duì)設(shè)計(jì)過(guò)程中作用范圍并不在控制范圍之中的情況,我們可以采取以下措施實(shí)現(xiàn)作業(yè)范圍的轉(zhuǎn)移:把判定所在模塊合并至父模塊之中,使判定處在比較高的層次之中;對(duì)受到判定影響的模塊進(jìn)行下移,使其轉(zhuǎn)移至控制范圍中;把判定上移到層次高的位置。第四,盡量降低高扇結(jié)構(gòu),在一個(gè)模塊中,如果存在的扇出數(shù)比較大,則表示這一模塊存在著比較復(fù)雜的情況,我們要對(duì)下屬模塊進(jìn)行協(xié)調(diào)和控制,并盡量多增加一些中間層次的控制模塊。第五,確保模塊大小合適。一般來(lái)說(shuō),在衡量模塊大小的時(shí)候,我們主要以模塊中所含的語(yǔ)句數(shù)量作為依據(jù),一般來(lái)說(shuō),語(yǔ)句的行數(shù)要控制在50到100的范圍內(nèi),而且應(yīng)保持在一頁(yè)紙中,最大的時(shí)候也不得超過(guò)500行。
三、結(jié)語(yǔ)
本文關(guān)于結(jié)構(gòu)化設(shè)計(jì)方法的研究雖然具有一定的實(shí)踐指導(dǎo)作用,但是受制于篇幅的限制,也還存在很多不足之處,基于此,還希望各位程序設(shè)計(jì)人員能夠加強(qiáng)這方面的學(xué)習(xí)和探索,為提升軟件設(shè)計(jì)的水平而共同努力。
作者:劉薇 單位:同濟(jì)大學(xué)軟件學(xué)院