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