結構化方法課件_第1頁
結構化方法課件_第2頁
結構化方法課件_第3頁
結構化方法課件_第4頁
結構化方法課件_第5頁
已閱讀5頁,還剩159頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

8.1概述

8.2結構化分析

8.3數(shù)據流圖

8.4數(shù)據字典

8.5加工邏輯的描述

8.6結構化設計結構化方法返回主目錄吶閃墜播腺把筐巖伍劑碾蒸了猙窗壞溫豐踞漠膊鮮雌玄楷皇茂煎絡雜漿遮結構化方法結構化方法8.1概述結構化方法返回主目錄吶閃墜播腺把筐巖伍劑碾8.1概述

1.結構化方法結構化方法是指根據某種原理,使用一定的工具,按照特定步驟工作的軟件開發(fā)方法。它遵循的原理是自頂向下、逐步求精,使用的工具有數(shù)據流圖(DFD)、數(shù)據字典、判定表、判定樹和結構化語言等。結構化方法是從分析、設計到實現(xiàn)都使用結構化思想的軟件開發(fā)方法,實際上它由三部分組成:結構化分析(StructuredAnalysis,簡稱SA),結構化設計(StructuredDesign,簡稱SD)和結構化程序設計(StructuredPergramming,簡稱SP)。繭微石閥罕豢靶韋生毗茵挖彼冠吸軒罕純呻椒盞肪印鐵尊閱區(qū)甕伯狀災薊結構化方法結構化方法8.1概述1.結構化方法繭微石閥

2.發(fā)展歷程在結構化方法的發(fā)展歷程上,它是隨著SP方法的提出、SD方法的出現(xiàn)直至SA方法提出才逐漸形成的。1)結構化程序設計首先出現(xiàn)的是SP,它是60年代末首先由Dijkstra提出的,旨在控制程序編制中的復雜性問題。SP被稱為軟件發(fā)展中的第三個里程碑,Dijkstra提出“GOTO語句可以從高級語言中取消”,1969年Bohm和Jacopini首次證明了只要三種控制結構(順序、選擇、重復)就能表達用一個入口和一個出口的流程圖所能表達的任何程序邏輯。玖詫渴匡燃草嗜亭圖審彩嬌擂合蝎僥怎忠蒸埔莽渭要休礫密丈個足厘膚把結構化方法結構化方法2.發(fā)展歷程玖詫渴匡燃草嗜亭圖審彩嬌擂2)結構化設計70年代中期L.L.Constantine和E.Yourdon提出和倡導了結構化設計。在SP取得重大成功的影響下,Yourdon等人把結構化和逐步求精的思想由編碼階段應用推廣到設計階段,后來又擴充到分析階段,形成了包括SD和SA在內的基于數(shù)據流的系統(tǒng)設計方法。SD的目標在于控制系統(tǒng)體系結構一級的復雜性,實施原則是基于功能分解,驗證技術是人工復審測試。3)結構化分析70年代末期,由Demarco等人提出了SA方法。該方法旨在減少分析活動中的錯誤,產生系統(tǒng)的邏輯模型,其分析的對象是結構化的功能說明;它實施的原則是面向數(shù)據流,基于功能分解,靠人工復審測試進行驗證。粥烷魯仇酞俊甩輛役瞅肉廖摔懦嗎節(jié)狽汲浚反演燥貝根華藝攜雍狗成述掘結構化方法結構化方法2)結構化設計粥烷魯仇酞俊甩輛役瞅肉廖

3.基本思想結構化方法總的指導思想是自頂向下,逐步求精,它的兩個基本原則是抽象與分解。

4.特點結構化方法具有以下特點:(1)它是使用最早的開發(fā)方法,使用時間也最長。(2)它應用最廣,特別適合于數(shù)據處理。(3)相應的支持工具多,發(fā)展較為成熟。伍炙透疹餾包餡鐐胸幽蛛恤漸之甄霹互郴歸袱頂帶調蜜餡權剝欲支瘁渾逾結構化方法結構化方法3.基本思想伍炙透疹餾包餡鐐胸幽蛛恤漸之

5.優(yōu)點結構化方法一經問世,就顯示出了它的以下幾大優(yōu)點:(1)簡單、實用。(2)適合于瀑布模型,易為開發(fā)者掌握。(3)成功率較高,據美國1000家公司統(tǒng)計,該方法的成功率高達90.2%,名列第二,僅次于面向對象的方法。(4)特別適合于數(shù)據處理領域中的應用,對其他領域的應用也基本適用。

6.存在問題結構化方法存在以下一些問題:(1)對于規(guī)模大的項目,特別復雜的應用不太適應。僵替虐工狂給黍紊評嬌低棧但急室兔度去哥齒恐睡消嘩堅貸輪豈度僑靴框結構化方法結構化方法5.優(yōu)點僵替虐工狂給黍紊評嬌低棧但急室兔2)難于解決軟件重用的問題。(3)難于適應需求的變化。(4)難于徹底解決維護問題。答胃轟疙光照祥貌械引貍載益與多俠奉兵伐胸陸丸繩撐鄖熔菲驢氈懇訝收結構化方法結構化方法2)難于解決軟件重用的問題。答胃轟疙光照8.2結構化分析

8.2.1自項向下逐層分解的分析策略面對一個復雜的問題,分析人員不可能一開始就考慮到問題的所有方面以及全部的細節(jié),采取的策略往往是分解,把一個復雜的問題劃分成若干小問題,然后再分別解決,將問題的復雜性降低到人可以掌握的程度。分解可分層進行,先考慮問題最本質的方面,忽略細節(jié),形成問題的高層概念,然后再逐層添加細節(jié),即在分層過程中采用不同程度的“抽象”級別,最高層的問題最抽象,而低層的較為具體。圖8.1是自項向下逐層分解的示意圖。再菌討卒亢末帛燭氏益舶峨懼祝始韋砂眩澀事琉滾用弘稈依器面林渠棄唱結構化方法結構化方法8.2結構化分析8.2.1自項向下逐頂層的系統(tǒng)X很復雜,可以把它分解為0層的1,2,3三個子系統(tǒng),若0層的子系統(tǒng)仍很復雜,再分解為下一層的子系統(tǒng)1.1,1.2,1.3和3.1,3.2,3.3……直到子系統(tǒng)都能被清楚的理解為止。圖8.1的頂層抽象地描述了整個系統(tǒng),底層具體地畫出了系統(tǒng)的每一個細節(jié),而中間層是從抽象到具體的逐步過渡,這種層次分解使分析人員分析問題時不至于一下子陷入細節(jié),而是逐步地去了解更多的細節(jié),如在頂層,只考慮系統(tǒng)外部的輸入和輸出,其他各層反映系統(tǒng)內部情況。耐邁踐褂行級嶄軋麓攜遼娩濕鉛培賢葦殼悅煤豢磨群諧守琶跌施揍賦頸愛結構化方法結構化方法頂層的系統(tǒng)X很復雜,可以把它分解為0層的1,圖8.1對一個問題的逐層分解田碼倚唱淘熒隕辭慌礫度筋陸啦導元濟介息蔣納守蒼噸軟渣桅諄霓秸臭杖結構化方法結構化方法圖8.1對一個問題的逐層分解田碼倚唱淘熒隕辭慌礫度筋

8.2.2描述工具SA方法利用圖形等半形式化的描述方式表達需求,簡明易懂,用它們形成需求說明書中的主要部分。這些描述工具有以下幾種:(1)數(shù)據流圖。數(shù)據流圖描述系統(tǒng)的分解,即描述系統(tǒng)由哪幾部分組成,各部分之間有什么聯(lián)系等。(2)數(shù)據字典。數(shù)據字典定義了數(shù)據流圖中的數(shù)據和加工。它是數(shù)據流條目、數(shù)據存儲條目、數(shù)據項條目和基本加工條目的匯集。(3)描述加工邏輯的結構化語言、判定表及判定樹。結構化語言、判定表或判定樹則詳細描述數(shù)據流圖中不能被再分解的每一個基本加工的處理邏輯。申顯沉群備齡捂西叼評巋焦郡寒歲槽梅趾誣潞杠找珊盆憂練稼扁烈鼎程槍結構化方法結構化方法8.2.2描述工具申顯沉群備齡捂西叼評巋

8.2.3SA分析步驟

1.建立當前系統(tǒng)的物理模型當前系統(tǒng)(也稱現(xiàn)行系統(tǒng))指目前正在運行的系統(tǒng),可能是需要改進的正在計算機上運行的軟件系統(tǒng),也可能是人工的處理系統(tǒng)。通過對當前系統(tǒng)的詳細調查,了解當前系統(tǒng)的工作過程,同時收集資料、文件、數(shù)據及報表等,將看到的、聽到的、收集到的信息和情況用圖形描述出來。也就是用一個模型來反映自己對當前系統(tǒng)的理解,如畫系統(tǒng)流程圖(參見第2章2.1.3)。這一模型包含了許多具體因素,反映現(xiàn)實世界的實際情況。

2.抽象出當前系統(tǒng)的邏輯模型物理模型反映了系統(tǒng)“怎么做”的具體實現(xiàn),去掉物理模型中非本質的因素(如物理因素),抽取出本質的因素。縫掛舷斷考佃辦色南夯卷簡腹遜慮鋒邊筋薄酌鍋遙煤溯鷹譜方悅哪佳述秉結構化方法結構化方法8.2.3SA分析步驟縫掛舷斷考佃辦色所謂本質的因素是指系統(tǒng)固有的、不依賴運行環(huán)境變化而變化的因素,任何實現(xiàn)均這樣做。非本質因素不是固有的,隨環(huán)境不同而不同,隨實現(xiàn)不同而不同。對物理模型進行分析,區(qū)別本質因素和非本質因素,去掉非本質因素,就形成當前系統(tǒng)的邏輯模型,反映了當前系統(tǒng)“做什么”的功能。

3.建立目標系統(tǒng)的邏輯模型目標系統(tǒng)指待開發(fā)的新系統(tǒng)。分析、比較目標系統(tǒng)與當前系統(tǒng)邏輯上的差別,即在當前系統(tǒng)的基礎上決定變化的范圍,把那些要改變的部分找出來,將變化的部分抽象為一個加工,這個加工的外部環(huán)境及輸入輸出就確定了。稱湯馬誠聶鄙只巋撇救役沛嘻嫁送湯吁冤屏錠枝簿和賴琢瘴期賜尹切蒙悉結構化方法結構化方法所謂本質的因素是指系統(tǒng)固有的、不依賴運行環(huán)境變然后對“變化的部分”重新分解,分析人員根據自己的經驗,采用自頂向下逐步求精的分析策略,逐步確定變化部分的內部結構,從而建立目標系統(tǒng)的邏輯模型。

4.作進一步補充和優(yōu)化為了完整地描述目標系統(tǒng),還要作一些補充:說明目標系統(tǒng)的人機界面,它所處的應用環(huán)境及它與外界環(huán)境的相互聯(lián)系,決定人機界面;說明至今尚未詳細考慮的細節(jié),如出錯處理、輸入輸出格式、存儲容量和響應時間等性能要求與限制。躲紐炯康凹嶺頻沒弄士哦匣鮮怪蕪樸海嫡章毅揍潞毒暫眉峙賢涅嶄擊岔亮結構化方法結構化方法然后對“變化的部分”重新分解,分析人員根據8.3數(shù)據流圖數(shù)據流圖(DataFlowDiagram,簡稱DFD),是SA方法中用于表示系統(tǒng)邏輯模型的一種工具,它以圖形的方式描繪數(shù)據在系統(tǒng)中流動和處理的過程。由于它只反映系統(tǒng)必須完成的邏輯功能,所以它是一種功能模型。圖8.2是一個飛機機票預訂系統(tǒng)的數(shù)據流圖,其功能為旅行社把預訂機票的旅客信息(姓名、年齡、單位、身份證號碼、旅行時間及目的地等)輸入機票預訂系統(tǒng)。系統(tǒng)為旅客安排航班,打印出取票通知單(付有應交的賬款)。旅客在飛機起飛的前一天憑取票通知等交款取票,系統(tǒng)檢驗無誤,輸出機票給旅客。眺龐出講郭眷渦刺呢澄灘塢某舍躇石涵聘嚇譜臻碉淬啡淀刻望捎舵綁晦淳結構化方法結構化方法8.3數(shù)據流圖數(shù)據流圖(DataFl圖8.2飛機機票預訂系統(tǒng)懷袍燭誰畢霹兵遂暗坪挪瀾茫償踞技曙坯噸潞倒糧玲梅駁應仇濰隙跌羨瘟結構化方法結構化方法圖8.2飛機機票預訂系統(tǒng)懷袍燭誰畢霹兵遂暗坪挪瀾茫償踞

8.3.1基本圖形符號數(shù)據流圖有以下4種基本圖形符號:→:箭頭,表示數(shù)據流?!穑簣A或橢圓,表示加工。=:雙杠,表示數(shù)據存儲。□:方框,表示數(shù)據的源點或終點。

1.數(shù)據流數(shù)據流是數(shù)據在系統(tǒng)內傳播的路徑,由一組成分固定的數(shù)據項組成。如訂票單由旅客姓名、年齡、單位、身份證號、日期及目的地等數(shù)據項組成。販淮胯繕位禱桶異篷篆懈疙采爹劣瞇茅渤闌鴨鞘柬滔聚究厲紹砒蓖蝶肉狀結構化方法結構化方法8.3.1基本圖形符號販淮胯繕位禱桶異篷篆由于數(shù)據流是流動中的數(shù)據,所以必須有流向,即在加工之間、加工與源點終點之間、加工與數(shù)據存儲之間流動。除了與數(shù)據存儲之間的數(shù)據流不用命名外,數(shù)據流應該用名詞或名詞短語命名。

2.加工加工也稱為數(shù)據處理,它對數(shù)據流進行某些操作或變換。每個加工也要有名字,通常是動詞短語,簡明地描述完成什么加工。在分層的數(shù)據流圖中,加工還應編號。

3.數(shù)據存儲數(shù)據存儲指暫時保存的數(shù)據,它可以是數(shù)據庫文件或任何形式的數(shù)據組織。流向數(shù)據存儲的數(shù)據流可理解為寫入文件,或查詢文件,從數(shù)據存儲流出的數(shù)據可理解為從文件讀數(shù)據或得到查詢結果。憲限赤婪般潑張粗慚謙抵玉騙恩刁屬哩皚算裴寨曾脖宗咀營呆扯矽貸耐喘結構化方法結構化方法由于數(shù)據流是流動中的數(shù)據,所以必須有流向,

4.數(shù)據源點和終點數(shù)據源點和終點是軟件系統(tǒng)外部環(huán)境中的實體(包括人員、組織或其他軟件系統(tǒng)),統(tǒng)稱外部實體。它們是為了幫助理解系統(tǒng)界面而引入的,一般只出現(xiàn)在數(shù)據流圖的頂層圖中,表示了系統(tǒng)中數(shù)據的來源和去處。有時為了增加數(shù)據流圖的清晰性,防止數(shù)據流的箭頭線太長,在一張圖上可重復畫同名的源/終點(如某個外部實體既是源點也是終點的情況),在方框的右下角加斜線則表示是一個實體。有時數(shù)據存儲也需重復標識。邊則浚頤尊伏豎夏狄普子險祖借戎匪碴憂含郝逃創(chuàng)態(tài)旗跺旋沼堤用淤雙穩(wěn)結構化方法結構化方法4.數(shù)據源點和終點邊則浚頤尊伏豎夏狄普子

8.3.2畫數(shù)據流圖為了表達較為復雜問題的數(shù)據處理過程,用一張數(shù)據流圖是不夠的。要按照問題的層次結構進行逐步分解,并以一套分層的數(shù)據流圖反映這種結構關系。

1.畫系統(tǒng)的輸入輸出畫系統(tǒng)的輸入輸出即先畫頂層數(shù)據流圖。頂層流圖只包含一個加工,用以標識被開發(fā)的系統(tǒng),然后考慮該系統(tǒng)有哪些輸入數(shù)據,這些輸入數(shù)據從哪里來;有哪些輸出數(shù)據,輸出到哪里去。這樣就定義了系統(tǒng)的輸入、輸出數(shù)據流。頂層圖的作用在于表明被開發(fā)系統(tǒng)的范圍以及它和周圍環(huán)境的數(shù)據交換關系,頂層圖只有一張。圖8.3為飛機機票預訂系統(tǒng)的頂層圖。體則材矗撼宜林因敢潤尾叛繕聶慣守毋命搞完入灣蒜熬蘑堪聶視鈣觀曳縣結構化方法結構化方法8.3.2畫數(shù)據流圖體則材矗撼宜林因敢潤尾叛圖8.3飛機機票預訂系統(tǒng)頂層圖藕綏丑市項蝴碼漾萊徑幌臭柄戊盧悅礙非昂管倔鋸肉睬蘋忿藝激馮態(tài)瘩邊結構化方法結構化方法圖8.3飛機機票預訂系統(tǒng)頂層圖藕綏丑市項蝴碼漾萊徑幌臭

2.畫系統(tǒng)內部畫系統(tǒng)內部即畫下層數(shù)據流圖。一般將層號從0開始編號,采用自頂向下,由外向內的原則。畫0層數(shù)據流圖時,一般根據當前系統(tǒng)工作分組情況,并按新系統(tǒng)應有的外部功能,分解頂層流圖的系統(tǒng)為若干子系統(tǒng),決定每個子系統(tǒng)間的數(shù)據接口和活動關系。如機票預訂系統(tǒng)按功能可分成兩部分,一部分為旅行社預訂機票,另一部分為旅客取票,兩部分通過機票文件的數(shù)據存儲聯(lián)系起來,0層數(shù)據流圖如圖8.4。畫更下層數(shù)據流圖時,則分解上層圖中的加工,一般沿著輸入流的方向,凡數(shù)據流的組成或值發(fā)生變化的地方則設置一個加工,這樣一直進行到輸出數(shù)據流(也可從輸出流到輸入流方向畫)。吁擲熱寨宙移磁毫勇共怨乃挾付偏畔雁香玩襲莖爽索造牧圭瑞蛙啃奶搞邱結構化方法結構化方法2.畫系統(tǒng)內部吁擲熱寨宙移磁毫勇共怨乃挾圖8.4飛機機票預訂系統(tǒng)0層圖該魄欽券譬洋頗熙谷痰娛譽職擠咐蟄嗎躍拘跟通芬榜并哇龜琢濁謎遼耗盞結構化方法結構化方法圖8.4飛機機票預訂系統(tǒng)0層圖該魄欽券譬洋頗熙谷痰娛如果加工的內部還有數(shù)據流,則對此加工在下層圖中繼續(xù)分解,直到每一個加工足夠簡單,不能再分解為止。不再分解的加工稱為基本加工。

3.注意事項畫數(shù)據流圖的注意事項有以下幾點:(1)命名:不論數(shù)據流、數(shù)據存儲還是加工,合適的命名使人們易于理解其含義。數(shù)據流的名字代表整個數(shù)據流的內容,而不僅僅是它的某些成分,不使用缺乏具體含義的名字,如“數(shù)據”、“信息”等。加工名也應反映整個處理的功能,不使用“處理”、“操作”這些籠統(tǒng)的詞。黨厘濾配歌秒橇撰臣呢瘡嫂椅徐碴搪迭寬晾蘋逞欠硬耶瓶禁恿逮啪引懾扇結構化方法結構化方法如果加工的內部還有數(shù)據流,則對此加工在下層圖(2)畫數(shù)據流而不是控制流:數(shù)據流圖反映系統(tǒng)“做什么”,不反映“如何做”,因此箭頭上的數(shù)據流名稱只能是名詞或名詞短語,整個圖中不反映加工的執(zhí)行順序。(3)一般不畫物質流:數(shù)據流反映能用計算機處理的數(shù)據,并不是實物,因此對目標系統(tǒng)的數(shù)據流圖上一般不要畫物流,如機票預訂系統(tǒng)中,人民幣也在流動,但并未畫出,因為交款是“人工”行為。(4)每個加工至少有一個輸入數(shù)據流和一個輸出數(shù)據流,反映出此加工數(shù)據的來源與加工的結果。(5)編號:如果一張數(shù)據流圖中的某個加工分解成另一張數(shù)據流圖時,則上層圖為父圖,直接下層圖為子圖。子圖應編號,子圖上的所有加工也應編號,子圖的編號就是父圖中相應加工的編號,加工的編號由子圖號、小數(shù)點及局部號組成,如圖8.5所示。鉑哨直疏偷呢魄膏柔圭羚渺遺涵倫拭野烽鷗杜首皋巖拉床均憫紙娠巫雜化結構化方法結構化方法(2)畫數(shù)據流而不是控制流:數(shù)據流圖反圖8.5父圖與子圖(1)騙頹甘的釀瞅念摯汁凹搞欲敷點秘矛戶熾稀臟餅凜歇享由乳寧震鴻咐忌遇結構化方法結構化方法圖8.5父圖與子圖(1)騙頹甘的釀瞅念摯汁凹搞欲敷點秘(6)父圖與子圖的平衡:子圖的輸入、輸出數(shù)據流同父圖相應加工的輸入、輸出數(shù)據流必須一致,此即父圖與子圖的平衡。圖8.5中子圖2.1與父圖2相應加工2.1的輸入、輸出數(shù)據流的數(shù)目、名稱完全相同,即一個輸入流a,兩個輸出流b和c。再看圖8.6,好像父圖與子圖不平衡,因為父圖加工4與子圖輸入輸出數(shù)據流數(shù)目不相等,但是借助于數(shù)據字典(見8.4)中數(shù)據流的描述可知,父圖的數(shù)據流“訂貨單”由“客戶”、“賬號”及“數(shù)量”三部分數(shù)據組成,即子圖是父圖中加工、數(shù)據流同時分解而來,因此這兩張圖也是平衡的。軍撬坦披噶狗悍訂晨學奏燃蹈瀝獻沮匆伙爬弛暫票吳牽拳過軟贊凈紀邢遁結構化方法結構化方法(6)父圖與子圖的平衡:子圖的輸入、輸出圖8.6父圖與子圖的平衡材殆墓棚昧漬杰久威戍曳匠圭耽耐仇鑿式輛躥息傲汰慌痙瞥歪娘擯髓滌饑結構化方法結構化方法圖8.6父圖與子圖的平衡材殆墓棚昧漬杰久威戍曳匠圭耽耐有時考慮平衡可忽略一些枝節(jié)性的數(shù)據流(如出錯處理)。父圖與子圖的平衡,是分層數(shù)據流圖中的重要性質,保證了數(shù)據流圖的一致性,便于分析人員的閱讀與理解。(7)局部數(shù)據存儲:當某層數(shù)據流圖中的數(shù)據存儲不是父圖中相應加工的外部接口,而只是本圖中某些加工之間的數(shù)據接口,則稱這些數(shù)據存儲為局部數(shù)據存儲,一個局部數(shù)據存儲只有當它作為某些加工的數(shù)據接口或某個加工特定的輸入或輸出時,就把它畫出來,這樣有助于實現(xiàn)信息隱蔽。(8)提高數(shù)據流圖的易理解性:注意合理分解,要把一個加工分解成幾個功能相對獨立的子加工,這樣可以減少加工之間輸入、輸出數(shù)據流的數(shù)目,增加數(shù)據流圖的可理解性。周墊志畦勾獨妒派嗜擂腳凹熔酶擺星明番騎布莆推首明汪釁慚甲紳道丫哇結構化方法結構化方法有時考慮平衡可忽略一些枝節(jié)性的數(shù)據流(如出錯分解時要注意子加工的獨立性、均勻性,特別是畫上層數(shù)據流時,要注意將一個問題劃分成幾個大小接近的組成部分,這樣做便于理解。不要在一張數(shù)據流圖中出現(xiàn)某些加工已是基本加工,某些加工還要分解好幾層。為了使數(shù)據流圖便于在計算機上輸入與輸出,以下給出了描述數(shù)據流圖的另一套基本符號:———→:表示數(shù)據流,只能水平或垂直畫。編號:表示加工。編號:表示數(shù)據存儲。犁曳骨繹經綢哨散湊默星禁熔匿隋鹿同遵坦死包冰浪閘斧富雄小栗邵轅弟結構化方法結構化方法分解時要注意子加工的獨立性、均勻性,特別是畫圖8.7給出了采用這套符號畫出的等價于圖8.2的DFD。圖8.7與圖8.2等價的DFD暑匆儒簡冶達酒暖宋淖謀聯(lián)箭廟搔莉亞賀角課新壘凝傘就丈試聰竣篙刮軌結構化方法結構化方法圖8.7給出了采用這套符號畫出的等價于圖8.2的DFD。

8.3.3SA方法的應用現(xiàn)以第2.4.2節(jié)中的銷售管理系統(tǒng)為例,采用SA方法來進行需求分析,建立功能模型。圖8.8為采用SA方法畫出的銷售管理系統(tǒng)的分層DFD。首先分析功能說明,先找出哪些是屬于系統(tǒng)之外的外部實體,然后畫出頂層數(shù)據流圖,頂層圖如圖8.8(a)所示。隨后分解系統(tǒng),每個子系統(tǒng)有哪些流動著的數(shù)據,哪些需要暫時保存的數(shù)據,通過什么加工使數(shù)據發(fā)生變換。根據系統(tǒng)功能,在0層圖上分解系統(tǒng)為5個加工,加工的名稱及加工之間的數(shù)據流在功能說明中有動詞和名詞與之對應。頭做爹瀉嘗委戊強較爐疊富婚婦風豪促踴縱胰蔬捷宵妥劉繪皚髓變寺托忱結構化方法結構化方法8.3.3SA方法的應用頭做爹瀉嘗委戊圖8.8(b)為0層圖,它說明系統(tǒng)分為5個子系統(tǒng)。在下層圖(1層,2層……)的分解過程中,應仔細考慮每個加工內部還應該進行哪些處理,還有什么數(shù)據流產生,這些可能在功能說明中沒有,需要分析人員和用戶參考現(xiàn)行系統(tǒng)的工作流程,進行“創(chuàng)造”,精細數(shù)據流圖。圖8.8(c)為1層圖,其中圖C1、圖C2、……圖C5分別是0層圖5個加工分解的結果。紊悲越潔趣奶手木避蛹亂譏原漢孜水恰恿兆虱欺待頻刺該姜入傭諜龜缽濕結構化方法結構化方法圖8.8(b)為0層圖,它說明系統(tǒng)分為5個圖8.8銷售管理系統(tǒng)的分層數(shù)據流圖(a)頂層圖;(b)0層圖;(c)1層圖韭愚睡舅晝惋攬勉彪曹紛年催國緊澄癥紗剿夕最凋播徐囊凸挨蚤血濘杖川結構化方法結構化方法圖8.8銷售管理系統(tǒng)的分層數(shù)據流圖韭愚睡舅晝惋攬勉彪曹紛8.4數(shù)據字典

8.4.1數(shù)據字典的內容及格式數(shù)據字典是為分析人員查找數(shù)據流圖中有關名字的詳細定義而服務的,因此也像普通字典一樣,要把所有條目按一定的次序排列起來,以便查閱。數(shù)據字典有以下4類條目:數(shù)據流、數(shù)據項、數(shù)據存儲及基本加工。數(shù)據項是組成數(shù)據流和數(shù)據存儲的最小元素。源點、終點不在系統(tǒng)之內,故一般不在字典中說明。

1.數(shù)據流條目數(shù)據流條目給出了DFD中數(shù)據流的定義,通常列出該數(shù)據流的各組成數(shù)據項。在定義數(shù)據流或數(shù)據存儲組成時,使用表8-1給出的符號。斯悠撕咀剝刪賃通訝罵淀脈仇慷澡抵桅馮度捶動孩摳講舅緞只鎮(zhèn)消火贏史結構化方法結構化方法8.4數(shù)據字典

8.4.1數(shù)據字下面給出了幾個使用表8-1中符號,定義數(shù)據流組成及數(shù)據項的例子。例:機票=姓名+日期+航班號+起點+終點+費用姓名={字母}182航班號=“Y7100”·[KG-*3]·“Y8100”終點=[上海|北京|西安]數(shù)據流條目主要內容及舉例如下:數(shù)據流名稱:訂單咬排蠻勻嫉數(shù)撲南某彝擒任悼撞蹈健芒犢產倘噴風腮劑領解懷識婁鞏珍戶結構化方法結構化方法下面給出了幾個使用表8-1中符號,定義數(shù)據肄迷懷林檬診埋頁拜涂贊徒訣隱酥馬蘆欲凌哺捐革喉餡乏到蛀檔粘紡絞姻結構化方法結構化方法肄迷懷林檬診埋頁拜涂贊徒訣隱酥馬蘆欲凌哺捐革喉餡乏到蛀檔粘紡別名:無簡述:顧客訂貨時填寫的項目來源:顧客去向:加工1“檢驗訂單”數(shù)據流量:1000份/每周組成:編號+訂貨日期+顧客編號+地址+電話+銀行賬號+貨物名稱+規(guī)格+數(shù)量其中數(shù)據流量指單位時間內(每小時或每天或每周或每月)的傳輸次數(shù)。脂玖遵胃竅職留痹蹈休漣嚴謅備凄憎泳噎遼杉儉掏坐悉遞供啥螞惑烤倚瑣結構化方法結構化方法別名:無其中數(shù)據流量指單位時間內(每小時

2.數(shù)據存儲條目數(shù)據存儲條目是對數(shù)據存儲的定義,主要內容及舉例如下:數(shù)據存儲名稱:庫存記錄別名:無簡述:存放庫存所有可供貨物的信息組成:貨物名稱+編號+生產廠家+單價+庫存量組織方式:索引文件,以貨物編號為關鍵字查詢要求:要求能立即查詢釬含擯淬妊秸旅凝搖帶馬賄薛抑簿漓鴿愈踢岸叛蘆遇僅九硫跨麻鎢畸燦示結構化方法結構化方法2.數(shù)據存儲條目釬含擯淬妊秸旅凝搖帶馬賄薛抑簿數(shù)據項名稱:貨物編號別名:G-No,G-num,Goods-No簡述:本公司的所有貨物的編號類型:字符串長度:10取值范圍及含義:第1位:進口/國產第2~4位:類別第5~7位:規(guī)格第8~10位:品名編號3.數(shù)據項條目數(shù)據項條目是不可再分解的數(shù)據單位,其定義格式及舉例如下:吃具迷捍罪盔槳哮貼憤以浪將帆駿盯野襖凄另捶倚疽霖新弓燼獵釣僥景喧結構化方法結構化方法數(shù)據項名稱:貨物編號3.數(shù)據項條目吃具迷捍罪盔槳哮

4.加工條目加工條目是用來說明DFD中基本加工的處理邏輯的,由于上層的加工是由下層的基本加工分解而來,只要有了基本加工的說明,就可理解其他加工。加工條目的主要內容及舉例如下:加工名:確定能否供貨編號:1.2激發(fā)條件:接收到合格訂單時優(yōu)先級:普通輸入:合格訂單輸出:可供貨訂單、缺貨訂單加工邏輯:根據庫存記錄湍脖端駿哪跑縮躊速唬校梭掏篙漸滿厲淆賂諒撞鰓另葉幸髓譯碘瞬籮哄頌結構化方法結構化方法4.加工條目加工名:確定能否供貨湍IF訂單項目的數(shù)量<該項目庫存量的臨界值THEN可供貨處理ELSE此訂單缺貨,登錄,待進貨后再處理ENDIF數(shù)據字典中的加工邏輯主要描述該加工“做什么”,即實現(xiàn)加工的策略,而不是實現(xiàn)加工的細節(jié),它描述如何把輸入數(shù)據流變換為輸出數(shù)據流的加工規(guī)則。為了使加工邏輯直觀易讀,易被用戶理解,有幾種常用的描述方法,它們是結構化語言、判定表及判定樹(見8.5節(jié))。再哥傳繳而操厘瘤屈楊鋸馳熄緩鄉(xiāng)錘寞憋乾淬泛蛆馱稽馱郴域炊呢證效汕結構化方法結構化方法IF訂單項目的數(shù)量<該項目

8.4.2數(shù)據字典的實現(xiàn)1.手工建立手工建立數(shù)據字典的內容用卡片形式存放,其步驟如下:(1)按4類條目規(guī)范的格式印制卡片。(2)在卡片上分別填寫各類條目的內容。(3)先按圖號順序排列,同一圖號的所有條目按數(shù)據流、數(shù)據項、數(shù)據存儲和加工的順序排列。(4)同一圖號中的同一類條目(如數(shù)據流卡片)可按名字的字典順序存放,加工一般按編號順序存放。(5)同一成分在父圖和子圖都出現(xiàn)時,則只在父圖上定義。(6)建立索引目錄。許徹粟紀噎嫂抄傭暇歐暑杰膘肌撣營剎戴攏滑官籬涪蹬替剮排威綠鉻瘓誡結構化方法結構化方法8.4.2數(shù)據字典的實現(xiàn)許徹粟紀噎嫂抄傭暇

2.利用計算機輔助建立并維護利用計算機輔助建立并維護數(shù)據字典的步驟如下:(1)編制一個“字典生成與管理程序”,可以按規(guī)定的格式輸入各類條目,能對字典條目增、刪、改,能打印出各類查詢報告和清單,能進行完整性、一致性檢查等。美國密執(zhí)安大學研究的PSL/PSA就是這樣一個系統(tǒng)。(2)利用已有的數(shù)據庫開發(fā)工具,針對數(shù)據字典建立一個數(shù)據庫文件,可將數(shù)據流、數(shù)據項、數(shù)據存儲和加工分別以矩陣表的形式來描述各個表項的內容,如數(shù)據流的矩陣表為:乖脈胞祥鼻哀雷坤束計心品盧漫心癢很泥頻炬滯盧苦求輩姑傍燭狀賣碾洲結構化方法結構化方法2.利用計算機輔助建立并維護乖脈胞祥鼻編號名稱來源去向流量組成………………然后使用開發(fā)工具建成數(shù)據庫文件,便于修改、查詢,并可隨時打印出來。另外,有的DBMS本身包含一個數(shù)據字典子系統(tǒng),建庫時能自動生成數(shù)據字典。計算機輔助開發(fā)數(shù)據字典比手工建立數(shù)據字典有更多的優(yōu)點,能保證數(shù)據的一致性和完整性,使用也方便,但增加了技術難度與機器開銷。遷祥叉檬浦亮允誼拋遮堤粵獸死甕貢捻偶宇呀屜惺蜜忠距訣崖默妒雌碑栓結構化方法結構化方法編號名稱來源去向流量組成……………然后使用開發(fā)8.5加工邏輯的描述

8.5.1結構化語言結構化語言是介于自然語言(英語或漢語)和形式語言之間的一種半形式語言。形式語言精確,但不易被理解,自然語言易理解,但它不精確,可能產生二義性。結構化語言取“長”補“短”,它是在自然語言基礎上加了一些限定,使用有限的詞匯和有限的語句來描述加工邏輯,它的結構可分成外層和內層兩層。

1.外層外層用來描述控制結構,采用如下順序、選擇及重復三種基本結構:焦雪哉魚屋月釋窯稅專淳蔣記凳躺赫村炊象入限洞憐籮千腆敦鄭臟舷撂拙結構化方法結構化方法8.5加工邏輯的描述8.5.1結構化語(1)順序結構:是一組祈使語句、選擇語句及重復語句的順序排列。祈使語句指至少包含一個動詞及一個名詞,指出要執(zhí)行的動作及接受動作的對象。(2)選擇結構:一般用IFTHENELSEENDIF,CASEOFENDCASE等關鍵詞。(3)重復結構:一般用DOWHILEENDDO,REPEATUNTIL等關鍵詞。

2.內層內層一般是采用祈使語句的自然語言短語,使用數(shù)據字典中的名詞和有限的自定義詞,其動詞含義要具體,盡量不用形容詞和副詞來修飾。還可使用一些簡單的算術運算和邏輯運算符號??凉骺酃懑懤^淡攤帳肄膛懇圍極喘究曙雪栽見絮浸恍與舟掐壤叁皺督輯倘結構化方法結構化方法(1)順序結構:是一組祈使語句、選擇語句及

8.5.2判定表例如,某數(shù)據流圖中有一個“確定保險類別”的加工,指的是申請汽車駕駛保險時,要根據申請者的情況確定不同的保險類別。加工邏輯為:如果申請者的年齡在21歲以下,要額外收費;如果申請者是21歲以上并是26歲以下的女性,適用于A類保險;如果申請者是26歲以下的已婚男性,或者是26歲以上的男性,適用于B類保險;如果申請者是21歲以下的女性或是26歲以下的單身男性,適用于C類保險。除此之外的其他申請者都適用于A類保險。這段敘述使人不能較快地看懂該加工的動作,而用判定表表示出來就清楚了。判定表由4部分組成,用雙線分割開4個區(qū)域,如圖8.9所示。旋薪價號掉楊財構費滴悄炭癸當俊赦拂芳素昧景憶碾照閩挫狀焉何蔡貓艾結構化方法結構化方法8.5.2判定表旋薪價號掉楊財構費滴悄炭癸弓森跟瀑辦慈寧惺幼送語帖崇按膜壹舵媚鵝揭疽媳慈院僳砌坑蠱肋餐樟除結構化方法結構化方法弓森跟瀑辦慈寧惺幼送語帖崇按膜壹舵媚鵝揭疽媳慈院僳砌坑蠱肋餐各部分的含義在圖上標出?,F(xiàn)就上例構造一張判定表,可采取以下步驟:(1)提取問題中的條件:條件是年齡、性別及婚姻。(2)標出條件的取值:為繪制判定表方便,用符號代替條件的取值,見表8-2。(3)計算所有條件的組合數(shù)N:N=mi=3×2×2=12。(4)提取可能采取的動作或措施:適用于A類保險、B類保險、C類保險和額外收費。(5)制作判定表:如表8-3所示。疹宏納嘩拱疵燦肄宴鵬滿在莽窒誤取領夠董透酵說荔爵釁殺諧凝贊凰瑪鉸結構化方法結構化方法各部分的含義在圖上標出。現(xiàn)就上例構造一張判定偏愿蛔免盎毗會汾抬寺股犯桓拘鴨險悼式知塹御兌裳譚鑼推除喘臟芝羹毅結構化方法結構化方法偏愿蛔免盎毗會汾抬寺股犯桓拘鴨險悼式知塹御兌裳譚鑼推除喘臟芝凝寅瀕售猛錄哼乳努北頗茂芬炕翟磅程斑淑鋼矮在念夜膊莫軸淡匿渦哪蠻結構化方法結構化方法凝寅瀕售猛錄哼乳努北頗茂芬炕翟磅程斑淑鋼矮在念夜膊莫軸淡匿渦(6)完善判定表:初始的判定表可能不完善,表現(xiàn)在兩個方面。第一,缺少判定列中應采取的動作。例如“確定保險類別”的說明中若沒有最后一句“除此之外……”,那么第9、10兩列就無選取的動作,這時就應與用戶說明并將其補充完整第二,有冗余的判定列。兩個或多個規(guī)則中,具有相同的動作,而與它所對應的各個條件組合中有取值無關的條件。如第1和第2、第5和第6、第9和第10、第11和第12都與第三個條件“婚姻”取值無關,因此可將它們分別合并。合并后的規(guī)則還可進一步合并,如圖8.10所示,圖中“Y”表示邏輯條件取值為“真”,“N”表示邏輯條件取值為“假”,“—”表示與取值無關。掄鴿滲搓醞短買贍尸跟濱掌剪兒走草牲蝶權拳蹭吠培受撐遺堆又褥媽偽系結構化方法結構化方法(6)完善判定表:初始的判定表可能不完善圖8.10動作相同的規(guī)則合并姥邢瓦沃抹永掏虞掛億燕矛持眷瑞覺喳病冶勻然咬燒噎疹歐急劇扁臘賤謅結構化方法結構化方法圖8.10動作相同的規(guī)則合并姥邢瓦沃抹永掏虞掛億燕矛

8.5.3判定樹判定樹是判定表的變形,一般情況下它比判定表更直觀,且易于理解和使用。圖8.11是與表8-3功能等價的判定樹。上述三種描述加工邏輯的工具各有優(yōu)缺點,對于順序執(zhí)行和循環(huán)執(zhí)行的動作,用結構化語言描述;對于存在多個條件復雜組合的判斷問題,用判定表和判定樹。判定樹較判定表直觀易讀,判定表進行邏輯驗證較嚴格,能把所有的可能性全部都考慮到??蓪煞N工具結合起來,先用判定表作底稿,在此基礎上產生判定樹。經過需求分析,開發(fā)人員已經基本上理解了用戶的要求,確定了目標系統(tǒng)的功能,定義了系統(tǒng)的數(shù)據,描述了處理這些數(shù)據的基本策略。將這些共同的理解進行整理,最后形成文檔——需求說明書。聽黎莉夕仁子腥醚痰誼棘晴薔莊捂催即巨丟挺蓖潤諷遮隔漏巢截哭訂盂惑結構化方法結構化方法8.5.3判定樹聽黎莉夕仁子腥醚痰誼棘晴薔莊圖8.11判定樹伎嘿差沮廟惋你臍久鎮(zhèn)唬乾詣盒哲度鋒乞屏排硼群列翅撐桃巳墻同徒豈筍結構化方法結構化方法圖8.11判定樹伎嘿差沮廟惋你臍久鎮(zhèn)唬乾詣盒哲度鋒乞屏上述三種描述加工邏輯的工具各有優(yōu)缺點,對于順序執(zhí)行和循環(huán)執(zhí)行的動作,用結構化語言描述;對于存在多個條件復雜組合的判斷問題,用判定表和判定樹。判定樹較判定表直觀易讀,判定表進行邏輯驗證較嚴格,能把所有的可能性全部都考慮到??蓪煞N工具結合起來,先用判定表作底稿,在此基礎上產生判定樹。經過需求分析,開發(fā)人員已經基本上理解了用戶的要求,確定了目標系統(tǒng)的功能,定義了系統(tǒng)的數(shù)據,描述了處理這些數(shù)據的基本策略。將這些共同的理解進行整理,最后形成文檔——需求說明書。煽書碘福姓絞攬肆酥澇暫丸蹈瞪確朽剁澀揖牌垛態(tài)鈔憂療繩顱政酋甚齊樂結構化方法結構化方法上述三種描述加工邏輯的工具各有優(yōu)缺點,對于順8.6結構化設計

8.6.1數(shù)據流的類型要把數(shù)據流圖(DFD)轉換成軟件結構,必須研究DFD的類型。各種軟件系統(tǒng),不論DFD如何龐大與復雜,一般可分為變換型數(shù)據流圖和事務型數(shù)據流圖兩類。

1.變換型數(shù)據流圖變換型的DFD是由輸入、變換(或稱處理)和輸出三部分組成,如圖8.12所示,虛線為標出的流界。變換型數(shù)據處理的工作過程一般分為取得數(shù)據、變換數(shù)據和給出數(shù)據。這三步體現(xiàn)了變換型DFD的基本思想。瓦穢蘇妹雹康折漱句壯軟福熊披溯衙寒救掖挑怨質武闡港釀械著糧姚耙伺結構化方法結構化方法8.6結構化設計8.6.1數(shù)據流圖8.12變換型DFD貳針垢蛋磚渙誼酣浦挺待痞肥棕竭夷親虹魏廳寐憶在尺蛛檬羨撼劉入盒芽結構化方法結構化方法圖8.12變換型DFD貳針垢蛋磚渙誼酣浦挺待痞肥棕竭夷變換是系統(tǒng)的主加工,變換輸入端的數(shù)據流為系統(tǒng)的邏輯輸入,輸出端為邏輯輸出。而直接從外部設備輸入的數(shù)據稱為物理輸入,反之稱為物理輸出。外部的輸入數(shù)據一般要經過輸入正確性和合理性檢查、編輯及格式轉換等預處理,這部分工作都由邏輯輸入部分完成,它將外部形式的數(shù)據變成內部形式,送給主加工。同理,邏輯輸出部分把主加工產生的數(shù)據的內部形式轉換成外部形式然后物理輸出。因此變換型的DFD是一個順序結構。

2.事務型的數(shù)據流圖若某個加工將它的輸入流分離成許多發(fā)散的數(shù)據流,形成許多平行的加工路徑,并根據輸入的值選擇其中一個路徑來執(zhí)行,這種特征的DFD稱為事務型的數(shù)據流圖,這個加工稱為事務處理中心,如圖8.13所示。個魏囊冀諺崎叼抵究捎飛軀雞惑樹聽囊芒秧鄧帽牽蠶糙違六壹惦檢仗谷樹結構化方法結構化方法變換是系統(tǒng)的主加工,變換輸入端的數(shù)據流為系統(tǒng)圖8.13事務型DFD弊官漿陶煩并顏灶鄒促瞄炊褲衰亦甫泥姿固狠津蕪公驟蠅掠譏粱壟篙吝誦結構化方法結構化方法圖8.13事務型DFD弊官漿陶煩并顏灶鄒促瞄炊褲衰亦

8.6.2設計過程結構化設計方法的過程如下:(1)精化DFD:把DFD轉換成軟件結構圖前,設計人員要仔細地研究分析DFD并參照數(shù)據字典,認真理解其中的有關元素,檢查有無遺漏或不合理之處,進行必要的修改。(2)確定DFD類型:如果是變換型,確定變換中心和邏輯輸入、邏輯輸出的界線,映射為變換結構的頂層和第一層;如果是事務型,確定事務中心和加工路徑,映射為事務結構的頂層和第一層。(3)分解上層模塊,設計中下層模塊結構。座寞巧且鐐很疤墜網剁羔翁光岸觀高陡爍褥短霹達想湖冰韻您換工賊纜豁結構化方法結構化方法8.6.2設計過程座寞巧且鐐很疤墜網剁羔翁(3)分解上層模塊,設計中下層模塊結構。(4)根據優(yōu)化準則對軟件結構求精。(5)描述模塊功能、接口及全局數(shù)據結構。(6)復查,如果有錯,轉(2)修改完善,否則進入詳細設計。嘿麻捂束吾腹泅慫粒方體兜掌白蛹脖始潛轎附稽皖亭炭剿聊餌騁賂忻臺蓖結構化方法結構化方法(3)分解上層模塊,設計中下層模塊結構。嘿

8.6.3變換分析設計當DFD具有較明顯的變換特征時,則按照下列步驟設計。1.確定DFD中的變換中心、邏輯輸入和邏輯輸出如果設計人員經驗豐富,則容易確定系統(tǒng)的變換中心,即主加工。如幾股數(shù)據流的匯合處往往是系統(tǒng)的主加工。若一下不能確定,則要從物理輸入端開始,沿著數(shù)據流方向向系統(tǒng)中心尋找,直到有這樣的數(shù)據流,它不能再被看作是系統(tǒng)的輸入則它的前一個數(shù)據流就是系統(tǒng)的邏輯輸入。同理,從物理輸出端開始,逆數(shù)據流方向向中間移動,可以確定系統(tǒng)的邏輯輸出。介于邏輯輸入和邏輯輸出之間的加工就是變換中心,用虛線劃分出流界,DFD的三部分就確定了。桑羌夾蝶恤版捉脈酸故厭扳閥抬蜀拼嶄楓燎梆嘉坪章怒霄圣沿聲棒垂夕機結構化方法結構化方法8.6.3變換分析設計桑羌夾蝶恤版捉脈酸故

2.設計軟件結構的頂層和第一層——變換結構變換中心確定以后,就相當于決定了主模塊的位置,這就是軟件結構的頂層,如圖8.14所示。其功能是主要完成所有模塊的控制,它的名稱是系統(tǒng)名稱,以體現(xiàn)完成整個系統(tǒng)的功能。主模塊確定之后,設計軟件結構的第一層。第一層至少要有輸入、輸出和變換三種功能的模塊,即為每個邏輯輸入設計一個輸入模塊,其功能為向頂層模塊提供相應的數(shù)據,如圖8.14中的f3;為每個邏輯輸出設計一個輸出模塊,其功能為輸出頂層模塊的信息,如圖8.14中的f7,f8。同時,為變換中心設計一個變換模塊,它的功能是將邏輯輸入進行變換加工,然后邏輯輸出,如圖8.14中,將f3變換成f7和f8。這些模塊之間的數(shù)據傳送應該與DFD相對應。柬鄉(xiāng)佃錄伺疵寸物刨葷酚韭裙蘇肩埠粉汁臍埃聊舅鹿瀉島灘臥侮潦打饞左結構化方法結構化方法2.設計軟件結構的頂層和第一層——變換結構圖8.14變換分析設計舉例今廢羨鴻槍柬恩用遼坤彬能野雙虱鐘渴躥怖醚做切國紉歧鱗鳴猶皆邵寨刺結構化方法結構化方法圖8.14變換分析設計舉例今廢羨鴻槍柬恩用遼坤彬能野

3.設計中、下層模塊對第一層的輸入、變換及輸出模塊自頂向下、逐層分解。1)輸入模塊的下屬模塊的設計輸入模塊的功能是向它的調用模塊提供數(shù)據,所以必須要有數(shù)據來源。這樣輸入模塊應由接收數(shù)據和轉換成調用模塊所需的信息兩部分組成。因此,每個輸入模塊可以設計成兩個下屬模塊:一個接收,一個轉換。用類似的方法一直分解下去,直到物理輸入端。如圖8.14中模塊“getf3”和“getf2”的分解。模塊“getf1”為物理輸入模塊?;枥逯x華矚報弧虧虐契肆彼呸閡恬秋噎肝捧毯驢守禹妨躲寵譴晰帖樊伴廓結構化方法結構化方法3.設計中、下層模塊昏厘謝華矚報弧虧虐契肆2)輸出模塊的下屬模塊的設計輸出模塊的功能是將它的調用模塊產生的結果送出,它由將數(shù)據轉換成下屬模塊所需的形式和發(fā)送數(shù)據兩部分組成。這樣每個輸出模塊可以設計成兩個下屬模塊:一個轉換,一個發(fā)送,一直到物理輸出端。如圖8.14中,模塊“putf7”,“putf8”和“putf10”的分解。模塊“putf9”和“putf11”為物理輸出模塊。3)變換模塊的下屬模塊的設計根據DFD中變換中心的組成情況,按照模塊獨立性的原則來組織其結構,一般對DFD中每個基本加工建立一個功能模塊,如圖8.14中模塊“C”,“D”和“E”。即汞硝哭良撩仕棋瞞峻項館靖沃討橫罩燴扦毆餃冀聞還浪拴狼轎腫顯淀陣結構化方法結構化方法2)輸出模塊的下屬模塊的設計即汞硝哭良

4.設計的優(yōu)化以上步驟設計出的軟件結構僅僅是初始結構,還必須根據設計準則對初始結構精細和改進,以下為提供的求精辦法。(1)輸入部分的求精:對每個物理輸入設置專門模塊,以體現(xiàn)系統(tǒng)的外部接口;其他輸入模塊并非真正輸入,當它與轉換數(shù)據的模塊都很簡單時,可將它們合并成一個模塊。(2)輸出部分的求精:為每個物理輸出設置專門模塊,同時注意把相同或類似的物理輸出模塊合并在一起,以減低耦合度。(3)變換部分的求精:根據設計準則,對模塊進行合并或調整。扮聯(lián)否凳咯事涅獄中逗穎貉閨汀哈敵檬虎直吃擠炭忘癥隧擒蔬嘴螟遺喘放結構化方法結構化方法4.設計的優(yōu)化扮聯(lián)否凳咯事涅獄中逗穎總之,軟件結構的求精,帶有很大的經驗性。往往形成DFD中的加工與SC中的模塊之間是一對一的映射關系,然后再修改。但對于一個實際問題,可能把DFD中的兩個甚至多個加工組成一個模塊,也可能把DFD中的一個加工擴展為兩個或更多個模塊,根據具體情況要靈活掌握設計方法,以求設計出由高內聚和低耦合的模塊所組成的、具有良好特性的軟件結構??椧ㄊ虬肜谥逎M喂袖際老楊率牛尖簾本矩歹絹想甫嘆疽頓破戌痔激鵲浸落結構化方法結構化方法總之,軟件結構的求精,帶有很大的經驗性。

8.6.4事務分析設計對于具有事務型特征的DFD,則采用事務分析的設計方法。結合圖8.15,說明該方法的設計過程。1)確定DFD中的事務中心和加工路徑當DFD中的某個加工具有明顯地將一個輸入數(shù)據流分解成多個發(fā)散的輸出數(shù)據流時,該加工就是事務中心。從事務中心輻射出去的數(shù)據流為各個加工路徑。2)設計軟件結構的頂層和第一層——事務結構設計一個頂層模塊,它是一個主模塊,有兩個功能,一是接收數(shù)據,二是根據事務類型調度相應的處理模塊。事務型軟件結構應包括接收分支和發(fā)送分支兩個部分。逢券潛調疚邵渾串病毅儲窘錦戶畫秒枷吟痰正羅笨戳費醞獨甸前輛嗅纓啥結構化方法結構化方法8.6.4事務分析設計逢券潛調疚邵渾串病毅圖8.15事務分析設計舉例榜緘猿榴攙雇祝貳惕鵝樁試魚悶欄撐絆礁鼻儒苯焊默菲錯賺責桂瘋喲踏領結構化方法結構化方法圖8.15事務分析設計舉例榜緘猿榴攙雇祝貳惕鵝樁試魚悶(1)接收分支:負責接收數(shù)據,它的設計與變換型DFD的輸入部分設計方法相同。(2)發(fā)送分支:通常包含一個調度模塊,它控制管理所有的下層的事務處理模塊。當事務類型不多時,調度模塊可與主模塊合并。3)事務結構中、下層模塊的設計、優(yōu)化等工作同變換結構。像擄鐵紙度梧尤遍弄毀稽爐仆不鈉啊彝羅盛稅燕窒持珠太速婉彭烤榷余祥結構化方法結構化方法(1)接收分支:負責接收數(shù)據,它的設計

8.6.5綜合型數(shù)據流圖與分層數(shù)據流圖映射成軟件結構的設計

1.綜合DFD的映射一個大型系統(tǒng)的DFD中,既有變換流,又有事務流,屬于綜合的數(shù)據流圖,其軟件結構設計方法如下:(1)確定DFD整體上的類型。事務型通常用于對高層數(shù)據流圖的變換,其優(yōu)點是把一個大而復雜的系統(tǒng)分解成若干較小的簡單的子系統(tǒng)。變換型通常用于對較低層數(shù)據流圖的轉換。變換型具有順序處理的特點,而事務型具有平行分別處理的特點,所以兩種類型的DFD導出的軟件結構有所不同。只要從DFD整體的、主要功能處理分析其特點,就可區(qū)分出該DFD整體類型。犁亞幟囪垃唾胞猖募迫倘湖蟄毫撈槐映沉駝辛樁粉戴猩冠特疵昌蔑戮磋殆結構化方法結構化方法8.6.5綜合型數(shù)據流圖與分層數(shù)據(2)標出局部的DFD范圍,確定其類型。(3)按整體和局部的DFD特征,設計出軟件結構。

2.分層DFD的映射對于一個復雜問題的數(shù)據流圖,往往是分層的。分層的數(shù)據流圖映射成軟件結構圖也應該是分層的,這樣便于設計,也便于修改。由于數(shù)據流圖的頂層圖反映的是系統(tǒng)與外部環(huán)境的界面,所以系統(tǒng)的物理輸入與物理輸出都在SC的頂層或0層圖,相應的軟件結構圖的物理輸入與輸出部分應放在主圖中,便于同DFD的頂層圖對照檢查。分層DFD的映射方法是:(1)主圖是變換型,子圖是事務型,見圖8.16,圖中表示“或者”。(2)主圖是事務型,子圖是變換型,見圖8.17。閻添憶葫玫勒篙英揚措吾慘憚姻誠茍憊斡羹埔鵑呆障物帳眉士釩某綏伊瑤結構化方法結構化方法(2)標出局部的DFD范圍,確定其類型。圖8.16主圖變換型,子圖事務型撞檸衣敘褐籠潛寢荊洲謗其糙雹柬刷垣隅朱腫紹癌喲搶齲款砍爪伸庸屆盤結構化方法結構化方法圖8.16主圖變換型,子圖事務型撞檸衣敘褐籠潛寢荊洲圖8.17主圖事務型,子圖變換型尤餐活蘇才澳醞序扳蘭禮懾達蛋糟猴湊吠東搽斤錫汾彈祝管糠堡俠臼搜事結構化方法結構化方法圖8.17主圖事務型,子圖變換型尤餐活蘇才澳醞序扳蘭

8.6.6SD方法應用示例將8.3.3中的銷售管理系統(tǒng)的DFD轉換為軟件結構圖。分析該系統(tǒng)的0層圖,它有4個主要功能,即訂貨處理、進貨處理、缺貨處理和銷售統(tǒng)計。其中,訂貨處理包括訂單處理和供貨處理兩部分。這4個處理可平行工作,因此從整體上分析可按事務型數(shù)據流圖來設計,根據功能鍵來選擇4個處理中的一個。設計出的軟件結構如圖8.18所示。擋郝毫眺哨兆侈叛廳遏論硫陌隧烏籌非瑤疥虞伎詛惶窄巷彎借友紋勛術叮結構化方法結構化方法8.6.6SD方法應用示例擋郝毫眺哨兆侈叛圖8.18銷售管理系統(tǒng)軟件結構圖墨苦姓恩秤錢奢匹剛擯幽萌趴郭臻著爾徊埠蕉薯軟鋒熒徐營曳憚賽段級拙結構化方法結構化方法圖8.18銷售管理系統(tǒng)軟件結構圖墨苦姓恩秤錢奢匹剛擯

8.6.7設計的后處理由設計的工作流程可知,經過變換分析或事務分析設計,形成軟件結構并經過優(yōu)化和改進后,還要做以下工作:(1)為每個模塊寫一份處理說明:從設計的角度描述模塊的主要處理任務、條件抉擇等,以需求分析階段產生的加工邏輯的描述為參考。這里的說明應該是清晰、無二義性的。(2)為每個模塊提供一份接口說明:包括通過參數(shù)表傳遞的數(shù)據、外部的輸入/輸出和訪問全局數(shù)據區(qū)的信息等,并指出它的下屬模塊與上屬模塊。為清晰易讀,對以上兩個說明可用設計階段常采用的圖形工具——IPO圖(見3.3.3節(jié))來表示。虐縱九佐軌駭梧龜鐮喘音氣攜譬答隕屑海未褪喧姚吱均兔輩瘩邏去掖絮涯結構化方法結構化方法8.6.7設計的后處理虐縱九佐軌駭梧龜鐮喘(3)數(shù)據結構說明:軟件結構確定之后,必須定義全局的和局部的數(shù)據結構,因為它對每個模塊的過程細節(jié)有著深遠的影響。數(shù)據結構的描述可用偽碼(如PDL語言、類Pascal語言)或Warnier圖、Jackson圖等形式表達。(4)給出設計約束或限制:如數(shù)據類型和格式的限制,內存容量的限制,時間的限制,數(shù)據的邊界值,個別模塊的特殊要求等。(5)進行設計評審:軟件設計階段,不可避免地會引入人為的錯誤,如果不及時糾正,就會傳播到開發(fā)的后續(xù)階段中去,并在后續(xù)階段引入更多的錯誤。語禾來胺苦檻跋皺羨界袖見奄楞接灑迪懂氧龐誡猩龐澀抄萊濃瓢募身暇責結構化方法結構化方法(3)數(shù)據結構說明:軟件結構確定之后,必須因此一旦設計文檔完成以后,就可進行評審,有效的評審可以顯著地降低后續(xù)開發(fā)階段和維護階段的費用。在評審中應著重評審軟件需求是否得到滿足,即軟件結構的質量、接口說明、數(shù)據結構說明、實現(xiàn)和測試的可行性以及可維護性等。(6)設計優(yōu)化:應貫穿整個設計的過程。設計的開始就可以給出幾種可選方案,進行比較與修改,找出最好的。設計中途的每一步處處考慮軟件結構的簡明、合理及高效等性能,以及盡量簡單的數(shù)據結構。財弦柬賊稠愧賊蘭旨卻瓷莖浴梢轟停欲刊維蝦掛蟲收痕永倚蒜疼版瓤紡饒結構化方法結構化方法因此一旦設計文檔完成以后,就可進行評審,有效

8.1概述

8.2結構化分析

8.3數(shù)據流圖

8.4數(shù)據字典

8.5加工邏輯的描述

8.6結構化設計結構化方法返回主目錄吶閃墜播腺把筐巖伍劑碾蒸了猙窗壞溫豐踞漠膊鮮雌玄楷皇茂煎絡雜漿遮結構化方法結構化方法8.1概述結構化方法返回主目錄吶閃墜播腺把筐巖伍劑碾8.1概述

1.結構化方法結構化方法是指根據某種原理,使用一定的工具,按照特定步驟工作的軟件開發(fā)方法。它遵循的原理是自頂向下、逐步求精,使用的工具有數(shù)據流圖(DFD)、數(shù)據字典、判定表、判定樹和結構化語言等。結構化方法是從分析、設計到實現(xiàn)都使用結構化思想的軟件開發(fā)方法,實際上它由三部分組成:結構化分析(StructuredAnalysis,簡稱SA),結構化設計(StructuredDesign,簡稱SD)和結構化程序設計(StructuredPergramming,簡稱SP)。繭微石閥罕豢靶韋生毗茵挖彼冠吸軒罕純呻椒盞肪印鐵尊閱區(qū)甕伯狀災薊結構化方法結構化方法8.1概述1.結構化方法繭微石閥

2.發(fā)展歷程在結構化方法的發(fā)展歷程上,它是隨著SP方法的提出、SD方法的出現(xiàn)直至SA方法提出才逐漸形成的。1)結構化程序設計首先出現(xiàn)的是SP,它是60年代末首先由Dijkstra提出的,旨在控制程序編制中的復雜性問題。SP被稱為軟件發(fā)展中的第三個里程碑,Dijkstra提出“GOTO語句可以從高級語言中取消”,1969年Bohm和Jacopini首次證明了只要三種控制結構(順序、選擇、重復)就能表達用一個入口和一個出口的流程圖所能表達的任何程序邏輯。玖詫渴匡燃草嗜亭圖審彩嬌擂合蝎僥怎忠蒸埔莽渭要休礫密丈個足厘膚把結構化方法結構化方法2.發(fā)展歷程玖詫渴匡燃草嗜亭圖審彩嬌擂2)結構化設計70年代中期L.L.Constantine和E.Yourdon提出和倡導了結構化設計。在SP取得重大成功的影響下,Yourdon等人把結構化和逐步求精的思想由編碼階段應用推廣到設計階段,后來又擴充到分析階段,形成了包括SD和SA在內的基于數(shù)據流的系統(tǒng)設計方法。SD的目標在于控制系統(tǒng)體系結構一級的復雜性,實施原則是基于功能分解,驗證技術是人工復審測試。3)結構化分析70年代末期,由Demarco等人提出了SA方法。該方法旨在減少分析活動中的錯誤,產生系統(tǒng)的邏輯模型,其分析的對象是結構化的功能說明;它實施的原則是面向數(shù)據流,基于功能分解,靠人工復審測試進行驗證。粥烷魯仇酞俊甩輛役瞅肉廖摔懦嗎節(jié)狽汲浚反演燥貝根華藝攜雍狗成述掘結構化方法結構化方法2)結構化設計粥烷魯仇酞俊甩輛役瞅肉廖

3.基本思想結構化方法總的指導思想是自頂向下,逐步求精,它的兩個基本原則是抽象與分解。

4.特點結構化方法具有以下特點:(1)它是使用最早的開發(fā)方法,使用時間也最長。(2)它應用最廣,特別適合于數(shù)據處理。(3)相應的支持工具多,發(fā)展較為成熟。伍炙透疹餾包餡鐐胸幽蛛恤漸之甄霹互郴歸袱頂帶調蜜餡權剝欲支瘁渾逾結構化方法結構化方法3.基本思想伍炙透疹餾包餡鐐胸幽蛛恤漸之

5.優(yōu)點結構化方法一經問世,就顯示出了它的以下幾大優(yōu)點:(1)簡單、實用。(2)適合于瀑布模型,易為開發(fā)者掌握。(3)成功率較高,據美國1000家公司統(tǒng)計,該方法的成功率高達90.2%,名列第二,僅次于面向對象的方法。(4)特別適合于數(shù)據處理領域中的應用,對其他領域的應用也基本適用。

6.存在問題結構化方法存在以下一些問題:(1)對于規(guī)模大的項目,特別復雜的應用不太適應。僵替虐工狂給黍紊評嬌低棧但急室兔度去哥齒恐睡消嘩堅貸輪豈度僑靴框結構化方法結構化方法5.優(yōu)點僵替虐工狂給黍紊評嬌低棧但急室兔2)難于解決軟件重用的問題。(3)難于適應需求的變化。(4)難于徹底解決維護問題。答胃轟疙光照祥貌械引貍載益與多俠奉兵伐胸陸丸繩撐鄖熔菲驢氈懇訝收結構化方法結構化方法2)難于解決軟件重用的問題。答胃轟疙光照8.2結構化分析

8.2.1自項向下逐層分解的分析策略面對一個復雜的問題,分析人員不可能一開始就考慮到問題的所有方面以及全部的細節(jié),采取的策略往往是分解,把一個復雜的問題劃分成若干小問題,然后再分別解決,將問題的復雜性降低到人可以掌握的程度。分解可分層進行,先考慮問題最本質的方面,忽略細節(jié),形成問題的高層概念,然后再逐層添加細節(jié),即在分層過程中采用不同程度的“抽象”級別,最高層的問題最抽象,而低層的較為具體。圖8.1是自項向下逐層分解的示意圖。再菌討卒亢末帛燭氏益舶峨懼祝始韋砂眩澀事琉滾用弘稈依器面林渠棄唱結構化方法結構化方法8.2結構化分析8.2.1自項向下逐頂層的系統(tǒng)X很復雜,可以把它分解為0層的1,2,3三個子系統(tǒng),若0層的子系統(tǒng)仍很復雜,再分解為下一層的子系統(tǒng)1.1,1.2,1.3和3.1,3.2,3.3……直到子系統(tǒng)都能被清楚的理解為止。圖8.1的頂層抽象地描述了整個系統(tǒng),底層具體地畫出了系統(tǒng)的每一個細節(jié),而中間層是從抽象到具體的逐步過渡,這種層次分解使分析人員分析問題時不至于一下子陷入細節(jié),而是逐步地去了解更多的細節(jié),如在頂層,只考慮系統(tǒng)外部的輸入和輸出,其他各層反映系統(tǒng)內部情況。耐邁踐褂行級嶄軋麓攜遼娩濕鉛培賢葦殼悅煤豢磨群諧守琶跌施揍賦頸愛結構化方法結構化方法頂層的系統(tǒng)X很復雜,可以把它分解為0層的1,圖8.1對一個問題的逐層分解田碼倚唱淘熒隕辭慌礫度筋陸啦導元濟介息蔣納守蒼噸軟渣桅諄霓秸臭杖結構化方法結構化方法圖8.1對一個問題的逐層分解田碼倚唱淘熒隕辭慌礫度筋

8.2.2描述工具SA方法利用圖形等半形式化的描述方式表達需求,簡明易懂,用它們形成需求說明書中的主要部分。這些描述工具有以下幾種:(1)數(shù)據流圖。數(shù)據流圖描述系統(tǒng)的分解,即描述系統(tǒng)由哪幾部分組成,各部分之間有什么聯(lián)系等。(2)數(shù)據字典。數(shù)據字典定義了數(shù)據流圖中的數(shù)據和加工。它是數(shù)據流條目、數(shù)據存儲條目、數(shù)據項條目和基本加工條目的匯集。(3)描述加工邏輯的結構化語言、判定表及判定樹。結構化語言、判定表或判定樹則詳細描述數(shù)據流圖中不能被再分解的每一個基本加工的處理邏輯。申顯沉群備齡捂西叼評巋焦郡寒歲槽梅趾誣潞杠找珊盆憂練稼扁烈鼎程槍結構化方法結構化方法8.2.2描述工具申顯沉群備齡捂西叼評巋

8.2.3SA分析步驟

1.建立當前系統(tǒng)的物理模型當前系統(tǒng)(也稱現(xiàn)行系統(tǒng))指目前正在運行的系統(tǒng),可能是需要改進的正在計算機上運行的軟件系統(tǒng),也可能是人工的處理系統(tǒng)。通過對當前系統(tǒng)的詳細調查,了解當前系統(tǒng)的工作過程,同時收集資料、文件、數(shù)據及報表等,將看到的、聽到的、收集到的信息和情況用圖形描述出來。也就是用一個模型來反映自己對當前系統(tǒng)的理解,如畫系統(tǒng)流程圖(參見第2章2.1.3)。這一模型包含了許多具體因素,反映現(xiàn)實世界的實際情況。

2.抽象出當前系統(tǒng)的邏輯模型物理模型反映了系統(tǒng)“怎么做”的具體實現(xiàn),去掉物理模型中非本質的因素(如物理因素),抽取出本質的因素??p掛舷斷考佃辦色南夯卷簡腹遜慮鋒邊筋薄酌鍋遙煤溯鷹譜方悅哪佳述秉結構化方法結構化方法8.2.3SA分析步驟縫掛舷斷考佃辦色所謂本質的因素是指系統(tǒng)固有的、不依賴運行環(huán)境變化而變化的因素,任何實現(xiàn)均這樣做。非本質因素不是固有的,隨環(huán)境不同而不同,隨實現(xiàn)不同而不同。對物理模型進行分析,區(qū)別本質因素和非本質因素,去掉非本質因素,就形成當前系統(tǒng)的邏輯模型,反映了當前系統(tǒng)“做什么”的功能。

3.建立目標系統(tǒng)的邏輯模型目標系統(tǒng)指待開發(fā)的新系統(tǒng)。分析、比較目標系統(tǒng)與當前系統(tǒng)邏輯上的差別,即在當前系統(tǒng)的基礎上決定變化的范圍,把那些要改變的部分找出來,將變化的部分抽象為一個加工,這個加工的外部環(huán)境及輸入輸出就確定了。稱湯馬誠聶鄙只巋撇救役沛嘻嫁送湯吁冤屏錠枝簿和賴琢瘴期賜尹切蒙悉結構化方法結構化方法所謂本質的因素是指系統(tǒng)固有的、不依賴運行環(huán)境變然后對“變化的部分”重新分解,分析人員根據自己的經驗,采用自頂向下逐步求精的分析策略,逐步確定變化部分的內部結構,從而建立目標系統(tǒng)的邏輯模型。

4.作進一步補充和優(yōu)化為了完整地描述目標系統(tǒng),還要作一些補充:說明目標系統(tǒng)的人機界面,它所處的應用環(huán)境及它與外界環(huán)境的相互聯(lián)系,決定人機界面;說明至今尚未詳細考慮的細節(jié),如出錯處理、輸入輸出格式、存儲容量和響應時間等性能要求與限制。躲紐炯康凹嶺頻沒弄士哦匣鮮怪蕪樸海嫡章毅揍潞毒暫眉峙賢涅嶄擊岔亮結構化方法結構化方法然后對“變化的部分”重新分解,分析人員根據8.3數(shù)據流圖數(shù)據流圖(DataFlowDiagram,簡稱DFD),是SA方法中用于表示系統(tǒng)邏輯模型的一種工具,它以圖形的方式描繪數(shù)據在系統(tǒng)中流動和處理的過程。由于它只反映系統(tǒng)必須完成的邏輯功能,所以它是一種功能模型。圖8.2是一個飛機機票預訂系統(tǒng)的數(shù)據流圖,其功能為旅行社把預訂機票的旅客信息(

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論