結(jié)構(gòu)化分析將數(shù)據(jù)和處理(加工)作為分析對象,數(shù)據(jù)的分析結(jié)果表示了現(xiàn)實(shí)世界中實(shí)體的屬性及其之間的相互關(guān)系,而處理的分析結(jié)果則展現(xiàn)了系統(tǒng)對數(shù)據(jù)的加工和轉(zhuǎn)換。
面向數(shù)據(jù)流建模是將系統(tǒng)建模成輸入-處理-輸出的模型,即流入軟件的數(shù)據(jù)對象,經(jīng)由處理的轉(zhuǎn)換,最后以結(jié)果數(shù)據(jù)對象的形式流出軟件。
下面通過一個(gè)案例來說明如何應(yīng)用結(jié)構(gòu)化分析、總體設(shè)計(jì)與詳細(xì)設(shè)計(jì)技術(shù)。
(一)需求說明

(二)結(jié)構(gòu)化分析
結(jié)構(gòu)化分析的最終結(jié)果是得到系統(tǒng)的數(shù)據(jù)流圖、數(shù)據(jù)字典和加工說明。
1. 界定系統(tǒng)的邊界
購入新書、讀者借書、讀者還書和圖書注銷將來都是由圖書管理員來操作系統(tǒng),因此 圖書管理員 將是系統(tǒng)的外部實(shí)體之一。
當(dāng)讀者借書超期時(shí),系統(tǒng)會(huì)給讀者一個(gè)罰款單信息,那么認(rèn)為 圖書管理系統(tǒng) 與 系統(tǒng)時(shí)鐘 都是系統(tǒng)的外部實(shí)體。
2. 畫出第0層圖
根據(jù)外部實(shí)體,得出系統(tǒng)不完整的第0層數(shù)據(jù)流圖,如下圖所示:

在不完整的第0層數(shù)據(jù)流圖上分析外部實(shí)體與系統(tǒng)間的數(shù)據(jù)流,因?yàn)?管理員 的兩大工作任務(wù)是 分析管理任務(wù) 和 查詢?nèi)蝿?wù) ,因此管理員會(huì)向系統(tǒng)輸入 管理請求 信息與 查詢請求 信息,根據(jù)輸入的管理請求,系統(tǒng)將會(huì)對一些存儲(chǔ)文件進(jìn)行修改;對查詢請求,系統(tǒng)則會(huì)給出讀者、圖書與借閱的統(tǒng)計(jì)信息。
系統(tǒng)時(shí)鐘 主要是為圖書管理系統(tǒng) 提供系統(tǒng)時(shí)間 。
將不完整的0層圖補(bǔ)充數(shù)據(jù)流可得完整的0層圖,如下圖所示:

3. 對0層圖進(jìn)一步細(xì)化
得到完整的第0層圖后,再對數(shù)據(jù)流圖中的圖書管理系統(tǒng)進(jìn)一步細(xì)化。
根據(jù)需求得知,系統(tǒng)主要分為 管理任務(wù) 和 查詢?nèi)蝿?wù) ,因此可以將其細(xì)化為兩個(gè)大的處理,如下圖所示:

對管理進(jìn)行進(jìn)一步細(xì)化,管理處理分為 ** 購書** 、借書 、 還書 和 清理 4項(xiàng)任務(wù),因此將管理分解為4個(gè)處理,另外需要一個(gè)單獨(dú)的處理根據(jù)管理請求的類型進(jìn)行請求分派。細(xì)化后的數(shù)據(jù)流圖如下圖所示:

同樣地,可以對處理1也進(jìn)行細(xì)化,細(xì)化完成后,對得到的數(shù)據(jù)流圖進(jìn)行轉(zhuǎn)化,從而形成系統(tǒng)的總體設(shè)計(jì)。
(三)總體設(shè)計(jì)
總體設(shè)計(jì)是給出數(shù)據(jù)流圖中的各個(gè)處理轉(zhuǎn)換為模塊后模塊與模塊之間的調(diào)用關(guān)系,后續(xù)需要根據(jù)總體設(shè)計(jì)給出模塊的詳細(xì)設(shè)計(jì)。
通過采用事務(wù)型的變換方式對數(shù)據(jù)流圖進(jìn)行變換,得到系統(tǒng)的總體結(jié)構(gòu)。如下圖所示:

(四)詳細(xì)設(shè)計(jì)
以借書為例,采用程序流程圖的形式描述借書模塊的詳細(xì)設(shè)計(jì)。
分析借書的輸入是讀者信息和借書信息,需要讀者信息的讀者借書證號,借書信息給出了讀者已經(jīng)借閱了多少本書,如果讀者借閱的書籍?dāng)?shù)目尚未超出系統(tǒng)的限制,則允許繼續(xù)借書,并把新的借書信息寫入借書文件;否則,拒絕借書。
該模塊的詳細(xì)流程圖如下圖所示:

完成每一個(gè)模塊的詳細(xì)設(shè)計(jì),即可將詳細(xì)設(shè)計(jì)轉(zhuǎn)換成程序代碼,從而實(shí)現(xiàn)整個(gè)管理系統(tǒng)。