版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1第5章結(jié)構(gòu)化分析與設(shè)計2結(jié)構(gòu)化方法一種面向數(shù)據(jù)流的傳統(tǒng)軟件開發(fā)方法以數(shù)據(jù)流為中心構(gòu)建軟件的分析模型和設(shè)計模型分為:結(jié)構(gòu)化分析(StructuredAnalysis簡稱SA)結(jié)構(gòu)化設(shè)計(StructuresdDesign簡稱SD)結(jié)構(gòu)化程序設(shè)計(StructuredProgrammin簡稱SP)3內(nèi)容摘要結(jié)構(gòu)化分析方法概述數(shù)據(jù)流圖分層數(shù)據(jù)流圖的審查數(shù)據(jù)字典描述基本加工的小說明結(jié)構(gòu)化設(shè)計概述數(shù)據(jù)流圖到軟件體系結(jié)構(gòu)的映射初始結(jié)構(gòu)圖的改進小結(jié)4內(nèi)容摘要結(jié)構(gòu)化分析方法概述數(shù)據(jù)流圖分層數(shù)據(jù)流圖的審查數(shù)據(jù)字典描述基本加工的小說明結(jié)構(gòu)化設(shè)計概述數(shù)據(jù)流圖到軟件體系結(jié)構(gòu)的映射初始結(jié)構(gòu)圖的改進小結(jié)5結(jié)構(gòu)化分析方法發(fā)展歷史提出:20世紀60年代末到70年代初成熟:20世紀70年代末到80年代中期主要思想:抽象與自頂向下的逐層分解
(控制復(fù)雜性的兩個基本手段)抽象:在每個抽象層次上忽略問題的內(nèi)部復(fù)雜性,只關(guān)注整個問題與外界的聯(lián)系分解:將問題不斷分解為較小的問題,直到每個最底層的問題都足夠簡單為止6結(jié)構(gòu)化分析方法中的抽象與分解抽象:從作為整體的軟件系統(tǒng)開始(第一層),每一抽象層次上只關(guān)注于系統(tǒng)的輸入輸出分解:將系統(tǒng)不斷分解為子系統(tǒng)、模塊……隨著分解層次的增加,抽象的級別越來越低,也越接近問題的解(算法和數(shù)據(jù)結(jié)構(gòu))2.42.32.22.121431.31.21.1X7結(jié)構(gòu)化分析過程理解當前的現(xiàn)實環(huán)境,獲得當前系統(tǒng)的具體模型(物理模型)從當前系統(tǒng)的具體模型抽象出當前系統(tǒng)的邏輯模型分析目標系統(tǒng)與當前系統(tǒng)邏輯上的差別,建立目標系統(tǒng)的邏輯模型為目標系統(tǒng)的邏輯模型作補充作為軟件系統(tǒng)主要是用計算機系統(tǒng)取代已存在的人工數(shù)據(jù)處理系統(tǒng),提高工作效率和自動化程度?,F(xiàn)實中已存在的人工系統(tǒng)稱為當前系統(tǒng)待開發(fā)的計算機系統(tǒng)(主要是指軟件系統(tǒng))稱為目標系統(tǒng)顯然,目標系統(tǒng)與當前系統(tǒng)在功能方面應(yīng)當是基本相同的,因為其需要實現(xiàn)人工系統(tǒng)的功能,只是在實現(xiàn)方法上有所不同,一個是人工實現(xiàn),另一個是計算機實現(xiàn)。不過,這兩個系統(tǒng)在實現(xiàn)細節(jié)方面也存在一定的差別。8(1)理解當前的現(xiàn)實環(huán)境,獲得當前系統(tǒng)的具體模型(物理模型)具體模型必須忠實地反映人工系統(tǒng)的實際情況。軟件開發(fā)人員在獲取的需求信息的基礎(chǔ)上,利用數(shù)據(jù)流圖將現(xiàn)實環(huán)境中的人工系統(tǒng)表達出來。這樣會有許多“具體”的東西,如人物、地點、名稱和設(shè)備等出現(xiàn)在數(shù)據(jù)流圖中。這樣做一是容易理解,二是剛著手分析問題時,還不清楚哪些是本質(zhì)和非本質(zhì)的因素,所以照搬現(xiàn)實比較合適。但隨著分析的展開,一些具體因素或非本質(zhì)因素就成為不必要的負擔,不利于系統(tǒng)的抽象9顧客統(tǒng)計科會計科出納員調(diào)撥單紅色聯(lián)發(fā)票白色聯(lián)發(fā)票(2)建立當前系統(tǒng)的邏輯模型從系統(tǒng)的具體模型中抽象出當前系統(tǒng)的邏輯模型。當前系統(tǒng)的邏輯模型應(yīng)反映當前系統(tǒng)必須滿足的性質(zhì),即當前系統(tǒng)“做什么”。此步的作用在于除去具體模型中非本質(zhì)因素或一些“具體”因素。前兩步是充分理解當前系統(tǒng)。當前系統(tǒng)的邏輯模型與具體模型的區(qū)別在于前者表達的是“做什么”,而后者表達的是“怎么做”,即具體模型反映的是當前系統(tǒng)的具體實現(xiàn)。但在用數(shù)據(jù)流圖表示兩個模型中,都混有“邏輯的”和“具體的”因素,只是多少不同而已,所以需要建立目標系統(tǒng)的邏輯模型10統(tǒng)計數(shù)據(jù)開發(fā)票記入出納帳調(diào)撥單存根聯(lián)付款聯(lián)(3)建立目標系統(tǒng)的邏輯模型主要是分析目標系統(tǒng)與當前系統(tǒng)在邏輯系統(tǒng)的差別,并建立目標系統(tǒng)的邏輯模型。建立目標系統(tǒng)的邏輯模型的工作也不必重新開始。作為一種方法是以當前模型的邏輯模型為基礎(chǔ),做些適當?shù)男薷暮腿サ羲械摹熬唧w”因素就行了.Step1:確定當前系統(tǒng)邏輯模型的“改變范圍”,即決定目標系統(tǒng)與當前系統(tǒng)之間不可實現(xiàn)的部分。此步就是沿著當前系統(tǒng)邏輯模型的底層DFD,逐個檢查每個基本加工。如果該加工在目標系統(tǒng)中不能實現(xiàn)或包含“具體”因素時,則這個加工屬于改變的范圍。這樣,當前系統(tǒng)的邏輯模型變成了不需改變和需改變兩個部分。當把需改變的部分進行修改后,就可獲得目標系統(tǒng)的邏輯模型。Step2:把“改變范圍”視為一個加工,并確定此加工的輸入/出數(shù)據(jù)流,當該加工比較抽象時,可將其進行逐層分解,然后畫出各層的DFD。11另一種方法是,首先建立目標系統(tǒng)的頂層DFD(0層)和第一層DFD(由若干子系統(tǒng)組成),然后再參照當前系統(tǒng)的邏輯模型,去掉其中所有“具體”因素和細化各子系統(tǒng),最后可得到目標系統(tǒng)的邏輯模型。12由前三步可獲得用DFD和數(shù)據(jù)詞典表示的目標系統(tǒng)的邏輯模型。(4)進一步完善目標系統(tǒng)的邏輯模型完善的工作大致為:至今尚未說明的處理細節(jié),如出錯處理、系統(tǒng)的啟動和結(jié)束方式。某些需要的輸入/出格式或用戶界面的說明。增加性能需求和其他一些約束限制等。1314結(jié)構(gòu)化分析模型的描述數(shù)據(jù)字典是模型的核心,它包含了軟件使用和產(chǎn)生所有數(shù)據(jù)的描述數(shù)據(jù)流圖:用于功能建模,描述系統(tǒng)的輸入數(shù)據(jù)流如何經(jīng)過一系列的加工變換逐步變換成系統(tǒng)的輸出數(shù)據(jù)流實體—關(guān)系圖:用于數(shù)據(jù)建模,描述數(shù)據(jù)字典中數(shù)據(jù)之間的關(guān)系實體-關(guān)系圖數(shù)據(jù)流圖狀態(tài)轉(zhuǎn)換圖控制規(guī)約數(shù)據(jù)字典加工規(guī)約數(shù)據(jù)對象描述狀態(tài)轉(zhuǎn)換圖:用于行為建模,描述系統(tǒng)接收哪些外部事件,以及在外部事件的作用下的狀態(tài)遷移情況15內(nèi)容摘要結(jié)構(gòu)化分析方法概述數(shù)據(jù)流圖分層數(shù)據(jù)流圖的審查數(shù)據(jù)字典描述基本加工的小說明結(jié)構(gòu)化設(shè)計概述數(shù)據(jù)流圖到軟件體系結(jié)構(gòu)的映射初始結(jié)構(gòu)圖的改進小結(jié)16數(shù)據(jù)流圖DataFlowDiagram(簡稱DFD):描述輸入數(shù)據(jù)流到輸出數(shù)據(jù)流的變換(即加工)過程,用于對系統(tǒng)的功能建模,基本元素包括:數(shù)據(jù)流(dataflow):由一組固定成分的數(shù)據(jù)組成,代表數(shù)據(jù)的流動方向加工(process):描述了輸入數(shù)據(jù)流到輸出數(shù)據(jù)流的變換,即將輸入數(shù)據(jù)流加工成輸出數(shù)據(jù)流文件(file):使用文件、數(shù)據(jù)庫等保存某些數(shù)據(jù)結(jié)果供以后使用源或宿(sourceorsink):由一組固定成分的數(shù)據(jù)組成,代表數(shù)據(jù)的流動方向17源或宿存在于軟件系統(tǒng)之外的人員或組織,表示軟件系統(tǒng)輸入數(shù)據(jù)的來源和輸出數(shù)據(jù)的去向,因此也稱為源點和終點例如,對一個考務(wù)處理系統(tǒng)而言考生向系統(tǒng)提供報名單(輸入數(shù)據(jù)流),所以考生是考試系統(tǒng)(軟件)的一個源考務(wù)處理系統(tǒng)要將考試成績的統(tǒng)計分析表(輸出數(shù)據(jù)流)傳遞給考試中心,所以考試中心是該系統(tǒng)的一個宿源或宿用相同的圖形符號表示當數(shù)據(jù)流從該符號流出時表示是源當數(shù)據(jù)流流向該符號時表示是宿當兩者皆有時表示既是源又是宿18加工和文件加工:描述輸入數(shù)據(jù)流到輸出數(shù)據(jù)流的變換每個加工用一個定義明確的名字標識至少有一個輸入數(shù)據(jù)流和一個輸出流可以有多個輸入數(shù)據(jù)流和多個輸出數(shù)據(jù)流文件:保存數(shù)據(jù)信息的外部單元每個文件用一個定義明確的名字標識由加工進行讀寫DFD中稱為文件,但在具體實現(xiàn)時可以用文件系統(tǒng)實現(xiàn)也可以用數(shù)據(jù)庫系統(tǒng)等實現(xiàn)19數(shù)據(jù)流每個數(shù)據(jù)流用由一組固定成分的數(shù)據(jù)組成并擁有一個定義明確的名字標識如:運動會管理系統(tǒng)中,報名單(數(shù)據(jù)流)由隊名、姓名、性別、參賽項目等數(shù)據(jù)組成數(shù)據(jù)流的流向從一個加工流向另一個加工從加工流向文件(寫文件)從文件流向加工(讀文件)從源流向加工從加工流向宿20示例:圖書訂購系統(tǒng)DFD圖書庫存入庫單圖書代理商書庫管理收費制作財務(wù)報表財務(wù)報表經(jīng)理帳務(wù)數(shù)據(jù)庫制作發(fā)書單圖書訂購核準的訂購單發(fā)書單訂購單顧客顧客收費數(shù)據(jù)帳單21數(shù)據(jù)流圖的擴充符號描述一個加工的多個數(shù)據(jù)流之間的關(guān)系星號(*):表示數(shù)據(jù)流之間存在“與”關(guān)系所有輸入數(shù)據(jù)流同時存在時,才能進行加工處理或加工處理的結(jié)果是同時產(chǎn)生所有輸出數(shù)據(jù)流加號(+):表示數(shù)據(jù)流之間存在“或”關(guān)系至少存在一個輸入數(shù)據(jù)流時才能進行加工處理或加工處理的結(jié)果是至少產(chǎn)生一個輸出數(shù)據(jù)流異或(⊕):表示數(shù)據(jù)流之間存在“異或”(互斥)關(guān)系必須存在且僅存在一個輸入數(shù)據(jù)流時,才能進行加工處理或加工處理的結(jié)果是產(chǎn)生且僅產(chǎn)生一個輸出數(shù)據(jù)流22對數(shù)據(jù)流圖進行分層GeorgeMiller在著名的論文“神奇的數(shù)字7加減2:我們處理信息的能力的某種限制”中指出:人們在一段時間內(nèi)的短期記憶似乎限制在5~9件事情之內(nèi)根據(jù)自頂向下逐層分解的思想將數(shù)據(jù)流圖畫成層次結(jié)構(gòu)每個層次畫在獨立的數(shù)據(jù)流圖中,加工個數(shù)可大致控制在“7加減2”的范圍中23數(shù)據(jù)流圖的各個層次頂層圖只有代表整個軟件系統(tǒng)的1個加工,描述了軟件系統(tǒng)與外界(源或宿)之間的數(shù)據(jù)流頂層圖中的加工經(jīng)分解后的圖稱為0層圖(只有1張)中間層圖中至少有一個加工(也可以有多個)在下層圖中分解成一張子圖處于最底層的圖稱為底層圖,其中所有的加工不再分解成新的子圖24圖和加工的編號頂層圖只有一個代表整個軟件系統(tǒng)的加工,該加工不必編號。0層圖中的加工編號分別為1,2,3,…子圖號:若父圖中的加工號x分解成某一子圖,則該子圖號記為“圖x”子圖中加工的編號:若父圖中的加工號為x的加工分解成某一子圖,則該子圖中的加工編號分別為x.1、x.2、x.3…25分層數(shù)據(jù)流圖示例——
資格和水平考試的考務(wù)處理系統(tǒng)簡化的資格和水平考試的考務(wù)處理系統(tǒng)分成多個級別,如初級程序員、程序員、高級程序員、系統(tǒng)分析員等,凡滿足一定條件的考生都可參加某一級別的考試考試的合格標準將根據(jù)每年的考試成績由考試中心確定考試的閱卷由閱卷站進行,因此,閱卷工作不包含在軟件系統(tǒng)中26資格和水平考試的考務(wù)處理系統(tǒng)
—功能需求1.對考生送來的報名單進行檢查2.對合格的報名單編好準考證號后將準考證送給考生,并將匯總后的考生名單送給閱卷站3.對閱卷站送來的成績清單進行檢查,并根據(jù)考試中心制訂的合格標準審定合格者4.制作考生通知單送給考生5.進行成績分類統(tǒng)計(按地區(qū)、年齡、文化程度、職業(yè)、考試級別等分類)和試題難度分析,產(chǎn)生統(tǒng)計分析表27資格和水平考試的考務(wù)處理系統(tǒng)
—部分數(shù)據(jù)流的組成報名單=地區(qū)+序號+姓名+文化程度+職業(yè)+考試級別+通信地址正式報名單=準考證號+報名單準考證=地區(qū)+序號+姓名+準考證號+考試級別+考場考生名單={準考證號+考試級別}
其中{w}表示w重復(fù)多次考生名冊=正式報名單統(tǒng)計分析表=分類統(tǒng)計表+難度分析表考生通知單=準考證號+姓名+通信地址+考試級別+考試成績+合格標志28(1)系統(tǒng)的輸入輸出(頂層圖)確定源或宿:考生、閱卷站和考試中心它們都既是源又是宿頂層圖唯一的加工:軟件系統(tǒng)(考務(wù)處理系統(tǒng))確定數(shù)據(jù)流:系統(tǒng)的輸入/輸出信息輸入數(shù)據(jù)流:報名單(來自考生)、成績清單(來自閱卷站)、合格標準(來自考試中心)輸出數(shù)據(jù)流:準考證(送往考生)、考生名單(送往閱卷站)、考生通知書(送往考生)、統(tǒng)計分析表(送往考試中心)額外的輸出流(考慮系統(tǒng)的健壯性):不合格報名單(返回給考生),錯誤成績清單(返回給閱卷站)頂層圖通常沒有文件29考務(wù)處理系統(tǒng)頂層圖考務(wù)處理系統(tǒng)考試中心考生不合格報名單閱卷站錯誤成績清單成績清單考生名單合格標準報名單準考證考生通知單統(tǒng)計分析表30(2)系統(tǒng)內(nèi)部(0層圖)-1以下確定加工、數(shù)據(jù)流、文件、源或宿的一般方法適用于0層圖及其各層子圖確定加工:將父圖中某加工分解而成的子加工根據(jù)功能分解來確定加工:將一個復(fù)雜的功能分解成若干個較小的功能,較多應(yīng)用于高層DFD中的分解根據(jù)業(yè)務(wù)處理流程確定加工:分析父圖中待分解加工的業(yè)務(wù)處理流程,業(yè)務(wù)流程中的每一步都可能是一個子加工特別要注意在業(yè)務(wù)流程中數(shù)據(jù)流發(fā)生變化或數(shù)據(jù)流的值發(fā)生變化的地方,應(yīng)該存在一個加工,例如:編制
準考證號正式報名單合格報名單31系統(tǒng)內(nèi)部(0層圖)-2確定數(shù)據(jù)流在父圖中某加工分解而成的子圖中,父圖中相應(yīng)加工的輸入/輸出數(shù)據(jù)流都是且僅是子圖邊界上的輸入/輸出數(shù)據(jù)流分解后的子加工之間應(yīng)增添相應(yīng)的新數(shù)據(jù)流表示加工過程中的中間數(shù)據(jù)如果某些中間數(shù)據(jù)需要保存以備后用,那么可以成為流向文件的數(shù)據(jù)流同一個源或加工可以有多個數(shù)據(jù)流流向一個加工,如果它們不是一起到達和一起加工的,那么可以將它們分成若干個數(shù)據(jù)流,例如:讀取銀行卡信息客戶銀行卡數(shù)據(jù)密碼32系統(tǒng)內(nèi)部(0層圖)-3確定文件如果父圖中該加工存在讀寫文件的數(shù)據(jù)流,則相應(yīng)的文件和數(shù)據(jù)流都應(yīng)畫在子圖中在分解子圖中,如果需要保存某些中間數(shù)據(jù)以備后用,則可以將這些數(shù)據(jù)組成一個新的文件新文件(首次出現(xiàn)的文件)至少應(yīng)有一個加工為其寫入記錄,同時至少存在另一個加工來讀該文件的記錄注意:從父圖中繼承下來的文件在子圖中可能只對其進行讀,或只進行寫33系統(tǒng)內(nèi)部(0層圖)-4確定源和宿0層圖和其它子圖中通常不必畫出源和宿有時為了提高可讀性,可以將頂層圖中的源和宿畫在0層圖中最終得到考務(wù)處理系統(tǒng)0層圖根據(jù)功能分解方法識別出兩個加工:考試報名、統(tǒng)計成績數(shù)據(jù)流繼承頂層圖中的輸入數(shù)據(jù)流和輸出數(shù)據(jù)流定義二個加工之間的數(shù)據(jù)流:由于這二個加工分別在考試前后進行,因此登記報名單所產(chǎn)生的結(jié)果“考生名冊”應(yīng)作為文件保存以便考試后由統(tǒng)計成績加工引用34考務(wù)處理系統(tǒng)0層圖考生名冊1考試報名報名單考生名單不合格報名單準考證2統(tǒng)計成績統(tǒng)計分析表合格標準考生通知單錯誤成績清單成績清單35(3)加工內(nèi)部(1…n層圖)復(fù)雜的加工可以繼續(xù)分解成1張DFD子圖分解方法將該加工看作一個小系統(tǒng),該加工的輸入/輸出數(shù)據(jù)流就是這個假設(shè)的小系統(tǒng)的輸入/輸出數(shù)據(jù)流然后采用畫0層圖的方法,畫出該加工的子圖以0層圖中加工1(考試報名)為例根據(jù)業(yè)務(wù)處理流程來確定由加工1的分解與加工1相關(guān)的業(yè)務(wù)流程:首先檢查考生送來的報名單,然后編準考證號,并產(chǎn)生準考證,最后產(chǎn)生考生名單和考生名冊(文件)36考務(wù)處理系統(tǒng)加工1子圖3個子加工:檢查報名單、編準考證號、登記考生“合格報名單”和“正式報名單”是新增加的數(shù)據(jù)流,其它數(shù)據(jù)流都是加工1原有的在加工1的分解中沒有新的文件產(chǎn)生1.3登記考生考生名單1.2編準考證號準考證
正式報名單1.1檢查報名單合格報名單報名單不合格報名單考生名冊37考務(wù)處理系統(tǒng)加工2子圖2.5分析試題難度難度分析表2.4分類統(tǒng)計成績分類統(tǒng)計表考生名冊2.3制作通知單考生通知單2.2審定合格者正式成績清單合格標準試題得分清單2.1檢查成績清單成績清單正確成績清單錯誤成績清單38總結(jié):畫分層數(shù)據(jù)流圖的步驟1.畫系統(tǒng)的輸入和輸出2.畫系統(tǒng)內(nèi)部3.畫加工內(nèi)部4.重復(fù)第3步,直至每個尚未分解的加工都足夠簡單(即不必再分解)39內(nèi)容摘要結(jié)構(gòu)化分析方法概述數(shù)據(jù)流圖分層數(shù)據(jù)流圖的審查數(shù)據(jù)字典描述基本加工的小說明結(jié)構(gòu)化設(shè)計概述數(shù)據(jù)流圖到軟件體系結(jié)構(gòu)的映射初始結(jié)構(gòu)圖的改進小結(jié)40分層數(shù)據(jù)流圖的審查檢查圖中是否存在錯誤或不合理(不理想)的部分一致性:分層DFD中不存在矛盾和沖突完整性:分層DFD本身的完整性,即是否有遺漏的數(shù)據(jù)流、加工等元素本節(jié)將從分層DFD的一致性和完整性、構(gòu)造分層DFD時需注意的問題以及分解程度等幾個方面來說明如何審查分層DFD的合理性只說明DFD的正確性,不代表分析模型的正確性!41分層數(shù)據(jù)流圖的一致性父圖與子圖平衡任何一張DFD子圖邊界上的輸入/輸出數(shù)據(jù)流必須與其父圖中對應(yīng)的加工的輸入/輸出數(shù)據(jù)流保持一致數(shù)據(jù)守恒一個加工所有輸出數(shù)據(jù)流中的數(shù)據(jù),必須能從該加工的輸入數(shù)據(jù)流中直接獲得,或者能通過該加工的處理而產(chǎn)生多余的數(shù)據(jù)流:加工未使用其輸入數(shù)據(jù)流中的某些數(shù)據(jù)項局部文件一個加工的輸出數(shù)據(jù)流不能與該加工的輸入數(shù)據(jù)流同名42父圖與子圖不平衡的實例加工2的輸入數(shù)據(jù)流有M和N,輸出數(shù)據(jù)流是T而子圖(右圖)邊界上的輸入數(shù)據(jù)流是N,輸出數(shù)據(jù)流是S和T123ABCMNT2.12.22.3NPSTQ43父圖與子圖平衡的實例注意:如果父圖某加工的一個數(shù)據(jù)流,對應(yīng)于子圖中幾個數(shù)據(jù)流,而子圖中組成這些數(shù)據(jù)流的數(shù)據(jù)項全體正好等于父圖中的這個數(shù)據(jù)流,那么它們?nèi)运闶瞧胶獾膃2.52.42.32.22.1b2b1acdb21acde(a)父圖(b)子圖a:考生通知單;b:統(tǒng)計分析表;b1:分類統(tǒng)計表;b2:難度分析表;c:錯誤成績清單;d成績清單;e合格標準。44數(shù)據(jù)不守恒的實例由于“正式成績清單”中缺少“考生通知單”中的姓名、通信地址等數(shù)據(jù),這些數(shù)據(jù)也無法由加工2.3自己產(chǎn)生,因此,加工2.3不滿足數(shù)據(jù)守恒的條件考生名冊2.5分析試題難度難度分析表2.4分類統(tǒng)計成績分類統(tǒng)計表2.3制作通知單考生通知單2.2審定合格者正式成績清單合格標準試題得分清單2.1檢查成績清單成績清單正確成績清單錯誤成績清單由此可見:
1.數(shù)據(jù)流的組成對DFD是有影響的2.構(gòu)建DFD與建立數(shù)據(jù)字典應(yīng)交替進行,以便于對分層DFD的校驗45局部文件考慮分層數(shù)據(jù)流中一個文件應(yīng)畫在哪些DFD中,而不該畫在哪些DFD中任何一個文件都應(yīng)同時包含讀和寫該文件的數(shù)據(jù)流,除非該文件是當前系統(tǒng)與另一個軟件系統(tǒng)所共享(應(yīng)在需求說明中指明)在一張DFD中當一個文件作為若干個加工之間的交界面(一個寫另一個讀)時該文件應(yīng)畫出在一張DFD中當一個文件僅與一個加工進行讀寫操作,并且在該DFD的父(祖先)圖中未出現(xiàn)過該文件則該文件是相應(yīng)加工的內(nèi)部文件,在當前DFD中不應(yīng)畫出一個文件一旦在某張DFD中畫出,那么在它的子孫圖中應(yīng)根據(jù)父圖與子圖平衡的原則畫出該文件在子孫圖中,這個文件可能只有讀或?qū)懳募械囊环N數(shù)據(jù)流46局部文件示例“試題得分清單”文件是加工2的局部文件,根據(jù)抽象原則不應(yīng)該將這類表示加工細節(jié)的局部文件畫在其父圖(如圖c)中,正確的畫法是圖a和b21(a)父圖考生名冊(b)子圖2.52.42.32.22.1試題得分清單考生名冊(c)含局部文件的父圖21試題得分清單考生名冊47加工的輸出數(shù)據(jù)流不能與該加工的輸入數(shù)據(jù)流同名同一個加工的輸出數(shù)據(jù)流和輸入數(shù)據(jù)流即使組成成份相同,仍應(yīng)對它們?nèi)〔煌拿郑员硎舅鼈兪遣煌瑪?shù)據(jù)流例如,“報名單”和“合格報名單”允許一個加工有二個相同的數(shù)據(jù)流分別流向二個不同的加工48分層數(shù)據(jù)流圖的完整性每個加工至少有一個輸入數(shù)據(jù)流和一個輸出數(shù)據(jù)流在整套分層數(shù)據(jù)流中,每個文件應(yīng)至少有一個加工讀該文件,有另一個加工寫該文件分層數(shù)據(jù)流圖中的每個數(shù)據(jù)流和文件都必須命名(除了流入或流出文件的數(shù)據(jù)流),并保持與數(shù)據(jù)字典的一致分層DFD中的每個基本加工(即不再分解子圖的加工)都應(yīng)有一個加工規(guī)約49其它需注意的問題-1適當命名:每個數(shù)據(jù)流、加工、文件、源和宿都應(yīng)被適應(yīng)地命名,名字應(yīng)符合被命名對象的實際含義名字應(yīng)反映整個對象(如數(shù)據(jù)流、加工),而不是僅反映它的某一部分避免使用空洞的、含義不清的名字,如數(shù)據(jù)、信息、處理、統(tǒng)計等如果發(fā)現(xiàn)某個數(shù)據(jù)流或加工難以命名時,往往是DFD分解不當?shù)恼髡?,此時應(yīng)考慮重新分解畫數(shù)據(jù)流而不是畫控制流判斷準則:這條線上是否有數(shù)據(jù)流過50其它需注意的問題-2避免一個加工有過多的數(shù)據(jù)流當一個加工存在許多數(shù)據(jù)流時往往意味著分解不合理解決辦法:重新分解1)把需要重新分解的某張圖(含有該復(fù)雜加工的圖)的所有子圖連接成一張圖2)把連接后的圖重新劃分成幾個部分,使各部分之間的聯(lián)系最小3)重新定義父圖,即第2)步中的每個部分作為父圖中的一個加工4)重新建立各子圖,即第2)步中的每個部分都是一張子圖5)為所有的加工重新命名和編號51數(shù)據(jù)流圖重新分解示例(b)原加工2子圖2.22.12.32.42.5HJICKLEMN(d)重新分解后的父圖452′32″1ABHGJICKLDEMFPN(a)原父圖34512HABJICKLDEMFPNG(c)合并4532.42.52.22.12.31FABHJICKLDEMPNG52其它需注意的問題-3分解盡可能均勻理想目標:任何兩個加工的分解層數(shù)之差不超過1應(yīng)盡可能使分解均勻,對于分解不均勻的情況應(yīng)重新分解先考慮穩(wěn)定狀態(tài),忽略瑣碎的枝節(jié)先考慮穩(wěn)定狀態(tài)下的各種問題,暫時不考慮系統(tǒng)如何啟動、如何結(jié)束、出錯處理以及性能等問題隨時準備重畫對于一個復(fù)雜的軟件系統(tǒng),往往要經(jīng)過反復(fù)多次的重畫和修改才能構(gòu)造出完整、合理、滿足用戶需求的分層DFD分析階段遺漏下來的一個錯誤,到開發(fā)后期要化費幾百倍代價來糾正這個錯誤53分解的程度可參照以下幾條與分解有關(guān)的原則:
7加減2分解應(yīng)自然,概念上合理、清晰只要不影響DFD的易理解性,可適當多分解幾個加工,以減少層數(shù)一般說來,上層分解得快些(即多分解幾個加工),下層分解得慢些(即少分解幾個加工)分解要均勻54內(nèi)容摘要結(jié)構(gòu)化分析方法概述數(shù)據(jù)流圖分層數(shù)據(jù)流圖的審查數(shù)據(jù)字典描述基本加工的小說明結(jié)構(gòu)化設(shè)計概述數(shù)據(jù)流圖到軟件體系結(jié)構(gòu)的映射初始結(jié)構(gòu)圖的改進小結(jié)55數(shù)據(jù)字典數(shù)據(jù)流圖與數(shù)據(jù)字典是密不可分的,兩者結(jié)合起來構(gòu)成軟件的邏輯模型(分析模型)數(shù)據(jù)字典由字典條目組成,每個條目描述DFD中的一個元素數(shù)據(jù)字典條目包括:數(shù)據(jù)流、文件、數(shù)據(jù)項(組成數(shù)據(jù)流和文件的數(shù)據(jù))、加工、源或宿加工邏輯的詳細說明可以用“小說明”來描述(5.5節(jié))56數(shù)據(jù)字典的描述符號符號名稱舉例=定義為x=…表示x由…組成+與a+b表示a和b[…,…]或[a,b]表示a或b[…│…]或[a│b]表示a或b{…}重復(fù){a}表示a重復(fù)0或多次{…}重復(fù){a}表示a重復(fù)3到8次(…)可選(a)表示a重復(fù)0或1次″…″基本數(shù)據(jù)元素″a″表a是基本數(shù)據(jù)57字典條目不同的開發(fā)組織或團隊可以根據(jù)項目的需要定義字典條目的描述內(nèi)容字典條目中的描述內(nèi)容主要包括DFD元素的基本信息(名稱、別名、簡述、注解)定義(數(shù)據(jù)類型、數(shù)據(jù)組成)使用特點(取值范圍、使用頻率、激發(fā)條件)控制信息(來源、去向、訪問權(quán)限)等條目的填寫在DFD繪制及數(shù)據(jù)建模等多個階段完成,可根據(jù)不同項目選擇描述內(nèi)容。58數(shù)據(jù)流條目的描述內(nèi)容名稱:數(shù)據(jù)流名(可以是中文名或英文名)別名:名稱的另一個名字簡述:對數(shù)據(jù)流的簡單說明數(shù)據(jù)流組成:描述數(shù)據(jù)流由哪些數(shù)據(jù)項組成數(shù)據(jù)流來源:描述數(shù)據(jù)流從哪個加工或源流出數(shù)據(jù)流去向:描述數(shù)據(jù)流流入哪個加工或宿數(shù)據(jù)量:系統(tǒng)中該數(shù)據(jù)流的總量如考務(wù)處理系統(tǒng)中“報名單”的總量是100000張或者單位時間處理的數(shù)據(jù)流數(shù)量,如80000張/天峰值:某時段處理的最大數(shù)量如每天上午9:00至11:00處理60000張表單注解:對該數(shù)據(jù)流的其它補充說明59數(shù)據(jù)流組成數(shù)據(jù)流組成是數(shù)據(jù)流條目的核心,它列出組成該數(shù)據(jù)流的各數(shù)據(jù)項,例如:培訓(xùn)報名單=姓名+單位+課程運動員報名單=隊名+姓名+性別+{參賽項目}當一個數(shù)據(jù)流的組成比較復(fù)雜時,可以將其分解成幾個數(shù)據(jù)流,例如:課程=課程名+任課教師+教材+時間地點時間地點={星期幾+第幾節(jié)+教室}3160數(shù)據(jù)流組成示例(發(fā)票)發(fā)票=單位名稱+{商品名+數(shù)量+單價+金額}
+總金額+日期+(營業(yè)員)
單位名稱商品名數(shù)量單價金額總金額日期營業(yè)員
5161文件條目的描述內(nèi)容名稱:文件名別名:同數(shù)據(jù)流條目簡述:對文件的簡單說明文件組成:描述文件的記錄由哪些數(shù)據(jù)項組成(與數(shù)據(jù)流條目中的文件組成描述方法相同)寫文件的加工:描述哪些加工寫文件讀文件的加工:描述哪些加工讀文件文件組織:描述文件的存儲方式(順序、索引),排序的關(guān)鍵字使用權(quán)限:描述各類用戶對文件讀、寫、修改的使用權(quán)限數(shù)據(jù)量:文件的最大記錄個數(shù)存取頻率:描述對該文件的讀寫頻率注解:對該文件的其它補充說明62數(shù)據(jù)項條目的描述內(nèi)容名稱:數(shù)據(jù)項名別名:同數(shù)據(jù)流條目簡述:對數(shù)據(jù)項的簡單描述數(shù)據(jù)類型:描述數(shù)據(jù)項的類型,如整型、實型、字符串等計量單位:指明數(shù)據(jù)項值的計量單位,如公斤、噸等取值范圍:描述數(shù)據(jù)項允許的值域,如1…100編輯方式:描述該數(shù)據(jù)項外部表示的編輯方式,如23,345.67與其它數(shù)據(jù)項的關(guān)系:描述該數(shù)據(jù)項與數(shù)據(jù)字典中其它數(shù)據(jù)項的關(guān)系注解:對數(shù)據(jù)項的其它補充說明63加工條目的描述內(nèi)容名稱:加工名別名:同數(shù)據(jù)流條目加工號:加工在DFD中的編號簡述:對加工的功能的簡要說明輸入數(shù)據(jù)流:描述加工的輸入數(shù)據(jù)流,包括讀哪些文件名輸出數(shù)據(jù)流:描述加工的輸出數(shù)據(jù)流,包括寫哪些文件名加工邏輯:簡要描述加工邏輯,或者對加工規(guī)約的索引基本加工的加工邏輯用小說明描述,在加工條目中可填寫對加工規(guī)約的索引非基本加工分解而成的DFD子圖已反映了它的加工邏輯,不必書寫小說明異常處理:描述加工處理過程中可能出現(xiàn)的異常情況,及其處理方式加工激發(fā)條件:描述執(zhí)行加工的條件,如,“身份認證正確”,“收到報名單”執(zhí)行頻率:描述加工的執(zhí)行頻率,如,每月執(zhí)行一次,每天0點執(zhí)行注解:對加工的其它補充說明64源或宿條目的描述內(nèi)容名稱:源或宿的名(外部實體名)別名:同數(shù)據(jù)流條目簡要描述:對源或宿的簡要描述(包括指明該外部實體在DFD中是用作“源”,還是“宿”,還是“既是源又是宿”)輸入數(shù)據(jù)流:描述源向系統(tǒng)提供哪些輸入數(shù)據(jù)流輸出數(shù)據(jù)流:描述系統(tǒng)向宿提供哪些輸出數(shù)據(jù)流注解:對源或宿的其它補充說明65別名條目的描述內(nèi)容只有那些有必要補充說明的別名才給出相應(yīng)的別名條目別名:別名的名字類型:指出別名屬于那個種類(數(shù)據(jù)流、文件、數(shù)據(jù)、加工、源或宿)基本名:別名的正式名稱(原名)簡述:同正式名稱的簡述說明:對別名的補充說明示例原始的數(shù)據(jù)項條目如下:數(shù)據(jù)項名稱:開戶日期別名:開設(shè)日期簡述:客戶建立帳戶的日期類型:日期注解:年≥1949
其別名條目如下:別名:開設(shè)日期類型:數(shù)據(jù)項基本名:開戶日期簡述:客戶建立帳戶的日期說明:1986年以后不再使用此別名66數(shù)據(jù)字典的實現(xiàn)提倡采用專用的軟件工具或者常用的實用程序(如,正文編輯程序、電子表格)來建立數(shù)據(jù)字典的電子文檔,其好處是便于字典條目的檢索,字典的管理和維護如果數(shù)據(jù)字典由輔助繪制DFD的工具自動產(chǎn)生的話,那么可以利用數(shù)據(jù)字典來檢查DFD的一致性和完整性,并保持數(shù)據(jù)字典與DFD的一致如果數(shù)據(jù)字典是由人工制作的,我們可以為每個字典條目制作一張卡片,所有卡片按字典條目的種類(數(shù)據(jù)流、文件、加工等)分類成冊,每類卡片按某種約定排序67內(nèi)容摘要結(jié)構(gòu)化分析方法概述數(shù)據(jù)流圖分層數(shù)據(jù)流圖的審查數(shù)據(jù)字典描述基本加工的小說明結(jié)構(gòu)化設(shè)計概述數(shù)據(jù)流圖到軟件體系結(jié)構(gòu)的映射初始結(jié)構(gòu)圖的改進小結(jié)68基本加工的小說明小說明是基本加工的規(guī)約說明,應(yīng)精確地描述用戶要求一個加工“做什么”包括加工的激發(fā)條件、加工邏輯、優(yōu)先級、執(zhí)行頻率、出錯處理等最基本的部分是加工邏輯,即該加工的輸出數(shù)據(jù)流與輸入數(shù)據(jù)流之間的邏輯關(guān)系加工邏輯不是對加工的設(shè)計,不涉及數(shù)據(jù)結(jié)構(gòu)、算法實現(xiàn)、編程語言等與設(shè)計和實現(xiàn)有關(guān)的細節(jié)69加工邏輯的描述方法結(jié)構(gòu)化語言:介于自然語言和形式語言之間的一種半形式語言判定表:適用于加工邏輯包含多個條件,而不同的條件組合需做不同的動作判定樹:判定表的變種,它本質(zhì)上與判定表是相同的,只是表示形式不同70結(jié)構(gòu)化語言沒有嚴格的語法加工規(guī)約分為若干個段落,每個段落可分為內(nèi)外兩層:外層有嚴格的語法來描述它的控制結(jié)構(gòu)如結(jié)構(gòu)化英語中可使用if_then_else、while_do、repeat_until、for_do、case等結(jié)構(gòu)內(nèi)層可以用自然語言來描述允許使用嵌套結(jié)構(gòu)71“計算信用度”的結(jié)構(gòu)化英語描述Case1(NoBounced-ChecksinCustomerRecord):
WriteExemplary-Customer―CitationtoAnnual―Summary.Case2(OneBounced-check):
IfYearly―Average―Balanceexceeds$1000.RemoveBounced―CheckfromCustomer―Record.Otherwise. RecuceCredit―Limitby10%.Case3(MultipleBounced-Checks):
ForeachBounced―Check.RecuceCredit―Limitby15%.SetCredit―RatingtoDeadbeat.WriteScathing―CommenttoAnnual―Summary.WriteCustomer―Name―and―AddresstoIRS―Enemies―List.72結(jié)構(gòu)化語言書寫加工規(guī)約注意事項語句力求精煉語句必須易讀、易理解、無二義主要使用祈使句,祈使句中的動詞要明確表達要執(zhí)行的動作所有名字必須是數(shù)據(jù)字典中有定義的名字不使用形容詞、副詞等修飾語不使用含義相同的動詞,如“修改”、“修正”等可以使用常用的算術(shù)和關(guān)系運算符總之要盡可能精確、無二義、簡明扼要、易理解73判定表判定表的組成元素條件樁(ConditionStub):列出各種條件的對象,如發(fā)貨單金額,賒欠天數(shù)等,每行寫一個條件對象條件條目(Conditienentry):列出各條件對象的取值,條件條目的每一列表示了一個可能的條件組合動作樁(actionstub):列出所有可能采取的動作,如發(fā)出發(fā)貨單等,每行寫一個動作動作條目(actioneutry):列出各種條件組合下應(yīng)采取的動作“審批發(fā)貨單”加工的判定表發(fā)貨單金額>500>500≤500≤500賒欠天數(shù)>60≤60>60≤60發(fā)不批準通知√發(fā)出批準書√√√發(fā)出發(fā)貨單√√√發(fā)出賒欠報告√74判定表的其它形式發(fā)貨單金額>500≤500-賒欠天數(shù)>60>60≤60發(fā)不批準通知√發(fā)出批準書√√發(fā)出發(fā)貨單√√發(fā)出賒欠報告√發(fā)貨單金額≤5000011發(fā)貨單金額>5001100賒欠天數(shù)≤600101賒欠天數(shù)>601010發(fā)不批準通知√發(fā)出批準單√√√發(fā)出發(fā)貨單√√√發(fā)出賒欠報告√“審批發(fā)貨單”加工的簡化判定表“審批發(fā)貨單”加工的另一種判定表75判定樹本質(zhì)上與判定表是相同的,只是表示形式不同例如“審批發(fā)貨單”加工邏輯的判定樹描述入下:
76內(nèi)容摘要結(jié)構(gòu)化分析方法概述數(shù)據(jù)流圖分層數(shù)據(jù)流圖的審查數(shù)據(jù)字典描述基本加工的小說明結(jié)構(gòu)化設(shè)計概述數(shù)據(jù)流圖到軟件體系結(jié)構(gòu)的映射初始結(jié)構(gòu)圖的改進小結(jié)77結(jié)構(gòu)化設(shè)計結(jié)構(gòu)化設(shè)計(StructuredDesign,簡稱SD)是將結(jié)構(gòu)化分析得到的數(shù)據(jù)流圖映射成軟件體系結(jié)構(gòu)的一種設(shè)計方法強調(diào)模塊化、自頂向下逐步求精、信息隱蔽、高內(nèi)聚低耦合等設(shè)計準則分為概要設(shè)計和詳細設(shè)計兩大步驟概要設(shè)計是對軟件系統(tǒng)的總體設(shè)計,采用結(jié)構(gòu)化設(shè)計方法,其任務(wù)是:將系統(tǒng)分解成模塊,確定每個模塊的功能、接口(模塊間傳遞的數(shù)據(jù))及其調(diào)用關(guān)系,并用模塊及其對模塊的調(diào)用來構(gòu)建軟件的體系結(jié)構(gòu)詳細設(shè)計是對模塊實現(xiàn)細節(jié)的設(shè)計,采用結(jié)構(gòu)化程序設(shè)計(StructuredProgramming,簡稱SP)方法SA、SD和SP構(gòu)成完整的結(jié)構(gòu)化方法體系78結(jié)構(gòu)圖用結(jié)構(gòu)圖(StructureChert)來描述軟件系統(tǒng)的體系結(jié)構(gòu)描述一個軟件系統(tǒng)由哪些模塊組成,以及模塊之間的調(diào)用關(guān)系結(jié)構(gòu)圖的基本成分有:模塊、調(diào)用和數(shù)據(jù)OQNRUVaa,cbccda,da,dMSffjPTSWghi79模塊(module)模塊是指具有一定功能的可以用模塊名調(diào)用的一組程序語句,如函數(shù)、子程序等它們是組成程序的基本單元一個模塊具有其外部特征和內(nèi)部特征外部特征包括:模塊的接口(模塊名、輸入/輸出參數(shù)、返回值等)和模塊的功能內(nèi)部特征包括:模塊的內(nèi)部數(shù)據(jù)和完成其功能的程序代碼在SD中,我們只關(guān)注模塊的外部特征,而忽略其內(nèi)部特征80調(diào)用和數(shù)據(jù)調(diào)用(call):用從一個模塊指向另一個模塊的箭頭來表示,其含義是前者調(diào)用了后者為了方便,有時常用直線替代箭頭,此時,表示位于上方的模塊調(diào)用位于下方的模塊數(shù)據(jù)(data):模塊調(diào)用時需傳遞的參數(shù)可通過在調(diào)用箭頭旁附加一個小箭頭和數(shù)據(jù)名來表示81結(jié)構(gòu)圖中的輔助符號DBCA圖5.20條件調(diào)用DBCA圖5.21循環(huán)調(diào)用圖5.22遞歸調(diào)用82結(jié)構(gòu)圖的幾個概念深度:程序結(jié)構(gòu)圖中控制的層數(shù),例如圖中所示的結(jié)構(gòu)圖的深度是5寬度:程序結(jié)構(gòu)圖中同一層次上模塊總數(shù)的最大值,例如圖中所示的結(jié)構(gòu)圖的寬度為7扇出(fanout):該模塊直接調(diào)用的模塊數(shù)目。例如,例如圖中模塊M的扇出是3,模塊A的是2,模塊B的扇出是1扇入(fanin):能直接調(diào)用該模塊的模塊數(shù)目。例如圖中模塊G的扇入是1,模塊I的扇入是2,模塊R的扇入是4WBKAEHJDGFILCMNOPQR深度寬度扇入扇出83相關(guān)指標的含義深度和寬度在一定程序上反映了程序的規(guī)模和復(fù)雜程度相對而言,如果程序結(jié)構(gòu)圖的深度和寬度較大,則說明程序的規(guī)模和復(fù)雜程度都較大。模塊的扇入扇出會影響結(jié)構(gòu)圖的深度和寬度,例如減少模塊的扇出,可能導(dǎo)致寬度變小而深度增加一個模塊的扇出過大通常意味著該模塊比較復(fù)雜,然而扇出太少,可能導(dǎo)致深度的增加一般情況,一個模塊的扇出以3~9為宜一個模塊的扇入表示有多少模塊可直接調(diào)用它,它反映了該模塊的復(fù)用(reuse)程度,因此模塊的扇入越大越好84啟發(fā)式設(shè)計策略-1按照模塊化設(shè)計原則,相應(yīng)的啟發(fā)式設(shè)計策略如下:改造程序結(jié)構(gòu)圖,降低耦合度,提高內(nèi)聚度避免高扇出,并隨著深度的增加,力求高扇入避免如圖a那樣的“平鋪”形態(tài),較好的結(jié)構(gòu)圖形態(tài)是如圖b那樣的“橢圓”型(a)平鋪形態(tài)(b)橢圓形態(tài)85啟發(fā)式設(shè)計策略-2模塊的影響范圍應(yīng)限制在該模塊的控制范圍內(nèi),例如下圖中圖a中,模塊B2的影響范圍(模塊A)不在其控制范圍(模塊B2)內(nèi)決策控制是在頂層模塊,其影響范圍(A、B2)在控制范圍內(nèi),但是從決策控制模塊到被控模塊之間相差多個層次c和d較合適,d為最好(c)TopXBB1AYB2TopXYABB2B1(d)XBB1YTopXBB1YAB2(a)(b)ATopB286啟發(fā)式設(shè)計策略-3降低模塊接口的復(fù)雜程度和冗余程度,提高一致性模塊接口上應(yīng)盡可能傳遞簡單數(shù)據(jù),而且傳遞的數(shù)據(jù)應(yīng)保持與模塊的功能相一致,即不傳遞與模塊功能無關(guān)的數(shù)據(jù)模塊的功能應(yīng)是可預(yù)測的,避免對模塊施加過多的限制模塊功能可預(yù)測是指該模塊對相同的輸入能產(chǎn)生相同的輸出限制一個模塊只處理單一的功能,那么,這個模塊體現(xiàn)出高內(nèi)聚盡可能設(shè)計單入口和單出口的模塊單入口和單出口的模塊能有效地避免內(nèi)容耦合87結(jié)構(gòu)化設(shè)計的步驟建立初始結(jié)構(gòu)圖將整個軟件看作一個大的功能模塊,通過功能分解不斷將其分解成若干個較小的功能模塊,直至得到一組不必再分解的模塊(結(jié)構(gòu)圖中的底層模塊)對結(jié)構(gòu)圖進行改進可根據(jù)設(shè)計準則和啟發(fā)式設(shè)計策略對初始結(jié)構(gòu)圖進行改進書寫設(shè)計文檔書寫設(shè)計規(guī)格說明,特別要為每個模塊書寫模塊的功能、接口、約束和限制等設(shè)計評審88內(nèi)容摘要結(jié)構(gòu)化分析方法概述數(shù)據(jù)流圖分層數(shù)據(jù)流圖的審查數(shù)據(jù)字典描述基本加工的小說明結(jié)構(gòu)化設(shè)計概述數(shù)據(jù)流圖到軟件體系結(jié)構(gòu)的映射初始結(jié)構(gòu)圖的改進小結(jié)89數(shù)據(jù)流圖到軟件體系結(jié)構(gòu)的映射結(jié)構(gòu)化設(shè)計是將結(jié)構(gòu)化分析的結(jié)果(數(shù)據(jù)流圖)映射成軟件的體系結(jié)構(gòu)(結(jié)構(gòu)圖)信息流:變換流和事務(wù)流將數(shù)據(jù)流圖分為變換型數(shù)據(jù)流圖和事務(wù)型數(shù)據(jù)流圖,對應(yīng)的映射分別稱為變換分析和事務(wù)分析90變換流特征:數(shù)據(jù)流圖可明顯地分成輸入、變換、輸出三部分信息沿著輸入路徑進入系統(tǒng),并將輸入信息的外部形式經(jīng)過編輯、格式轉(zhuǎn)換、合法性檢查、預(yù)處理等輔助性加工后變成內(nèi)部形式內(nèi)部形式的信息由變換中心進行處理然后沿著輸出路徑經(jīng)過格式轉(zhuǎn)換、組成物理塊、緩沖處理等輔助性加工后變成輸出信息送到系統(tǒng)外外部表示內(nèi)部表示信息時間變換流輸入流輸出流91事務(wù)流特征:數(shù)據(jù)流沿著輸入路徑到達一個事務(wù)中心,事務(wù)中心根據(jù)輸入數(shù)據(jù)的類型在若干條動作路徑中選擇一條來執(zhí)行事務(wù)中心的任務(wù)是:接收輸入數(shù)據(jù)(即事務(wù));分析每個事務(wù)的類型;根據(jù)事務(wù)類型選擇執(zhí)行一條動作路徑動作路徑事務(wù)中心輸入路徑T92數(shù)據(jù)流圖映射到結(jié)構(gòu)圖的步驟復(fù)審和精化數(shù)據(jù)流圖確定數(shù)據(jù)流圖的類型(變換型、事務(wù)型)將DFD映射成初始結(jié)構(gòu)圖:采用變換分析(5.7.3節(jié))或事務(wù)分析(5.7.4節(jié))技術(shù),將DFD映射成初始結(jié)構(gòu)圖改進初始結(jié)構(gòu)圖(5.8節(jié))93變換分析變換分析的任務(wù)是將變換型的DFD映射成初始的結(jié)構(gòu)圖,步驟如下:劃定輸入流和輸出流的邊界,確定變換中心進行第一級分解:將DFD映射成變換型的程序結(jié)構(gòu)進行第二級分解:將DFD中的加工映射成結(jié)構(gòu)圖中的一個適當?shù)哪K標注輸入輸出信息:根據(jù)DFD,在初始結(jié)構(gòu)圖上標注模塊之間傳遞的輸入信息和輸出信息94確定輸入/出流邊界和變換中心-1相關(guān)概念:物理輸入:指系統(tǒng)輸入端的數(shù)據(jù)流物理輸出:指系統(tǒng)輸出端的數(shù)據(jù)流邏輯輸入:指變換中心的輸入數(shù)據(jù)流邏輯輸出:指變換中心的輸出數(shù)據(jù)流劃分可能因人而異,但差別不會太大并可通過以后的結(jié)構(gòu)圖改進進行調(diào)整有的時候物理輸入無須預(yù)處理而直接用于系統(tǒng)的加工處理,此時物理輸入就是邏輯輸入(同樣也存在物理輸出就是邏輯輸出的情況)95確定輸入/出流邊界和變換中心-2基本步驟確定邏輯輸入:根據(jù)DFD從物理輸入端開始,一步步向系統(tǒng)的中間移動,可找到離物理輸入端最遠的,但仍可被看作系統(tǒng)輸入的那個(或那些)數(shù)據(jù)流,就是邏輯輸入確定邏輯輸出:根據(jù)DFD,從物理輸出端開始,一步步向系統(tǒng)的中間移動,可找到離物理輸出端最遠的,但仍可被看作系統(tǒng)輸出的那個(或那些)數(shù)據(jù)流,就是邏輯輸出確定變換中心:確定了所有的邏輯輸入和邏輯輸出后,位于邏輯輸入和邏輯輸出之間的部分就是變換中心96示例:統(tǒng)計成績子圖的輸入、輸出流邊界2.7打印難度分析表2.5分析試題難度難度分析結(jié)果難度分析表2.6打印分類統(tǒng)計表2.4分類統(tǒng)計成績分類統(tǒng)計結(jié)果分類統(tǒng)計表考生名冊2.2審定合格者2.8打印考生通知單2.3產(chǎn)生考生通知信息考生通知信息考生通知單正式成績清單合格標準2.1檢查成績清單成績清單正確成績清單試題得分清單錯誤成績清單97進行第一級分解將DFD映射成變換型的程序結(jié)構(gòu)大型的軟件系統(tǒng)第一級分解時可多分解幾個模塊,以減少最終結(jié)構(gòu)圖的層次數(shù)例如,每條輸入或輸出路徑畫一個模塊,每個主要變換功能各畫一個模塊變換型的結(jié)構(gòu)圖輸入控制模塊主控模塊輸出控制模塊變換控制模塊“統(tǒng)計成績”第一級分解的結(jié)構(gòu)圖統(tǒng)計成績輸入控制統(tǒng)計成績統(tǒng)計成績輸出控制統(tǒng)計成績處理模塊98進行第二級分解將DFD中的加工映射成結(jié)構(gòu)圖中的一個適當?shù)哪K分解步驟如下輸入控制模塊的分解:從變換中心的邊界開始,沿著輸入路徑向外移動,把輸入路徑上的每個加工和對物理輸入的接收映射成結(jié)構(gòu)圖中受輸入控制模塊控制的一個低層模塊輸出控制模塊的分解:從變換中心的邊界開始,沿著輸出路徑向外移動,把輸出路徑上的每個加工和對物理輸出的發(fā)送映射成結(jié)構(gòu)圖中受輸出控制模塊控制的一個低層模塊變換控制模塊的分解:把變換中心的每個加工映射成結(jié)構(gòu)圖中受變換控制模塊控制的一個低層模塊99“統(tǒng)計成績”第二級分解的結(jié)構(gòu)圖100事務(wù)分析將事務(wù)型DFD映射成初始的結(jié)構(gòu)圖實例:銀行業(yè)務(wù)中有存款、取款、查詢余額、開戶、轉(zhuǎn)帳等多種事務(wù),這種軟件通常是接收一個事務(wù),然后根據(jù)事務(wù)的類型執(zhí)行一個事務(wù)處理的功能事務(wù)型的結(jié)構(gòu)圖如圖所示,包括:主控模塊:完成整個系統(tǒng)的功能接收模塊:接收輸入數(shù)據(jù)(事務(wù))發(fā)送模塊:根據(jù)輸入事務(wù)的類型,選擇一個動作路徑控制模塊動作路徑控制模塊:完成相應(yīng)的動作路徑所執(zhí)行的子功能動作路徑1控制模塊發(fā)送模塊動作路徑n控制模塊動作路徑2控制模塊┄接收模塊主控模塊101事務(wù)分析的步驟確定事務(wù)中心:事務(wù)中心位于數(shù)條動作路徑的起點,這些動作路徑呈幅射狀從該點流出將DFD映射成事務(wù)型的結(jié)構(gòu)圖分解每條動作路徑所對應(yīng)的結(jié)構(gòu)圖接收模塊的分解:從事務(wù)中心開始,沿著輸入路徑向外移動,把輸入路徑上的每個加工映射成結(jié)構(gòu)圖中受接收模塊控制的一個低層模塊動作路徑控制模塊的分解:首先確定每條動作路徑的流類型(變換流或事務(wù)流),然后,運用變換分析或事務(wù)分析,將每條動作路徑映射成與其流特性相對應(yīng)的以動作路徑控制模塊為根模塊的結(jié)構(gòu)圖102分層DFD的映射0層圖反映了系統(tǒng)由哪些子系統(tǒng)組成,此時可先將0層圖映射成下圖中的結(jié)構(gòu)0層圖每個加工的DFD子圖可映射成以相應(yīng)模塊為根模塊的結(jié)構(gòu)子圖如果DFD子圖中的加工還可分解成一張子圖,則再將其映射成以相應(yīng)模塊為根模塊的結(jié)構(gòu)子圖依次一層一層分解下去得到最終的初始結(jié)構(gòu)圖如果初始結(jié)構(gòu)圖太大,我們也可以將它組織成分層的結(jié)構(gòu)圖子系統(tǒng)1系統(tǒng)子系統(tǒng)n子系統(tǒng)2┄103“考務(wù)處理系統(tǒng)”的初始結(jié)構(gòu)圖“考務(wù)處理系統(tǒng)”的初始結(jié)構(gòu)圖如書中圖5.35所示104內(nèi)容摘要結(jié)構(gòu)化分析方法概述數(shù)據(jù)流圖分層數(shù)據(jù)流圖的審查數(shù)據(jù)字典描述基本加工的小說明結(jié)構(gòu)化設(shè)計概述數(shù)據(jù)流圖到軟件體系結(jié)構(gòu)的映射初始結(jié)構(gòu)圖的改進小結(jié)105初始結(jié)構(gòu)圖的改進對結(jié)構(gòu)圖改進的依據(jù)就是觀察這種改進是否符合軟件設(shè)計的準則和啟發(fā)式設(shè)計策略因此結(jié)構(gòu)圖的改進沒有明顯的步驟,也很難定義終止條件設(shè)計改進往往伴隨著折中例如提取多個模塊中的相同功能可以提高模塊的獨立性和復(fù)用程度,但會增加模塊間的聯(lián)系改進往往不是一次完成的,需要進行多次的反復(fù),有時還需要
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年度專業(yè)版私人二手房購買協(xié)議3篇
- 2024-2030年中國大豆水解蛋白市場現(xiàn)狀分析及前景趨勢預(yù)測報告
- 2024-2030年中國城市地下管線探測行業(yè)需求趨勢預(yù)測發(fā)展規(guī)劃研究報告
- 2024-2030年中國垃圾發(fā)電項目可行性研究報告
- 2024-2030年中國地熱采暖專用地板產(chǎn)業(yè)未來發(fā)展趨勢及投資策略分析報告
- 2024-2030年中國土地儲備產(chǎn)業(yè)發(fā)展狀況規(guī)劃研究報告
- 2024年度人工智能領(lǐng)域股權(quán)補償協(xié)議3篇
- 2024年度校園物業(yè)管理及優(yōu)化合同版B版
- 2024年物聯(lián)網(wǎng)技術(shù)應(yīng)用開發(fā)合作協(xié)議
- 馬鞍山職業(yè)技術(shù)學(xué)院《數(shù)據(jù)庫應(yīng)用技術(shù)案例》2023-2024學(xué)年第一學(xué)期期末試卷
- 2023年自考傳播學(xué)概論試題及答案
- GB/T 18277-2000公路收費制式
- 2023年住院醫(yī)師規(guī)范化培訓(xùn)胸外科出科考試
- 11468工作崗位研究原理與應(yīng)用第7章
- 2023實施《中華人民共和國野生動物保護法》全文學(xué)習(xí)PPT課件(帶內(nèi)容)
- 2022年初級育嬰師考試題庫附答案
- 系統(tǒng)家庭療法課件
- 新版GSP《醫(yī)療器械經(jīng)營質(zhì)量管理規(guī)范》培訓(xùn)試題
- 初中道德與法治答題技巧課件
- 河北省保定市藥品零售藥店企業(yè)藥房名單目錄
- 廣西基本醫(yī)療保險門診特殊慢性病申報表
評論
0/150
提交評論