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