軟件工程第三講教案_第1頁
軟件工程第三講教案_第2頁
軟件工程第三講教案_第3頁
軟件工程第三講教案_第4頁
軟件工程第三講教案_第5頁
已閱讀5頁,還剩29頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)

文檔簡介

教案首頁周次日期課時序課題軟件需求分析教學(xué)目的要求理解需求分析階段所要完成的工作目標(biāo);掌握需求分析的分析方法重點理解需求分析的工作目標(biāo)難點掌握分析方法教學(xué)過程設(shè)計及時間分配軟件需求分析(2*45‘)需求分析的任務(wù)與步驟(30‘)需求分析的方法(30‘)圖形工具(15‘)需求規(guī)格說明與評審(15‘)教學(xué)場所或教學(xué)方法使用教具作業(yè)課后記授課教師第三章軟件需求分析3.1需求分析的任務(wù)與步驟軟件需求分析是軟件生存周期中重要的一步,也是最關(guān)鍵的一步。只有通過軟件需求分析,才能把軟件功能和性能研究清楚,并將其描述為具體的軟件需求規(guī)格說明,進而建立軟件開發(fā)的基礎(chǔ)。軟件需求分析是一個不斷認(rèn)識和逐步細化的過程。在該過程中能將軟件計劃階段所確定的軟件范圍逐步細化到可詳細說明的程度。制定軟件的需求規(guī)格說明不僅是軟件開發(fā)者的任務(wù),而且用戶也起著極其重要的作用。首先用戶必須對軟件功能和性能提出初步的基本要求,并澄清一些模糊概念。然后軟件分析人員了解用戶的要求,認(rèn)真細致地進行調(diào)查研究與分析,把用戶要做什么的要求最終轉(zhuǎn)換成一個完全的、細致的軟件需求規(guī)格說明,準(zhǔn)確地表達用戶的要求,進而為概要設(shè)計做好準(zhǔn)備工作。3.1.1需求分析的任務(wù)需求分析是軟件計劃時期的最后一個階段,它的基本任務(wù)是準(zhǔn)確地回答“系統(tǒng)必須做什么”這個問題。需求分析所要做的工作是深入描述軟件的功能和性能,確定軟件設(shè)計的限制和軟件與其它系統(tǒng)元素的接口細節(jié),描述軟件的其它有效性需求。分析員通過需求分析,逐步細化對軟件的要求,描述軟件要處理的數(shù)據(jù)域,并給軟件開發(fā)提供一種可轉(zhuǎn)化為數(shù)據(jù)設(shè)計、結(jié)構(gòu)設(shè)計和過程設(shè)計的數(shù)據(jù)與功能表示,在軟件完成后,制定的軟件需求規(guī)格說明還要為評價軟件質(zhì)量提供依據(jù)。需求分析階段研究的對象是軟件項目的用戶需求。雖然在可行性研究階段已經(jīng)粗略了解了用戶的需求,甚至還提出了一些可行的方案,但是,忽略了許多細節(jié)。所以可行性研究并不能代替需求分析。需要注意的是,必須全面理解用戶的各項要求,但又不能全盤接受用戶所有的要求。因為并非所有用戶要求都是合理的。對其中模糊的要求還需要澄清,然后才能決定是否可以采納。對于那些無法實現(xiàn)的要求應(yīng)向用戶做出充分的解釋說明。明確地表達所接受的用戶要求,是需求分析的另一個重要方面。只有經(jīng)過確切描述的軟件需求才能成為軟件設(shè)計的基礎(chǔ)。軟件開發(fā)項目是要求實現(xiàn)目標(biāo)系統(tǒng)的物理模型,即確定待開發(fā)軟件系統(tǒng)的系統(tǒng)元素,并將功能和數(shù)據(jù)結(jié)構(gòu)分配到這些系統(tǒng)元素中。這是軟件實現(xiàn)的基礎(chǔ)。但是目標(biāo)系統(tǒng)的具體物理模型是將其邏輯模型實例化,即具體到某個業(yè)務(wù)領(lǐng)域。與物理模型不同,邏輯模型忽略具體實現(xiàn)機制與細節(jié),只描述系統(tǒng)要完成的功能和要處理的數(shù)據(jù)。需求分析的任務(wù)就是借助于當(dāng)前系統(tǒng)的邏輯模型導(dǎo)出目標(biāo)系統(tǒng)的邏輯模型,解決目標(biāo)系統(tǒng)的做什么的問題。其實現(xiàn)步驟的描述如圖3-1所示。需求分析的任務(wù)不是確定系統(tǒng)如何完成它的工作,而是確定系統(tǒng)必須完成哪些工作,也就是對目標(biāo)系統(tǒng)提出完整、準(zhǔn)確、清晰、具體的要求。可行性研究階段產(chǎn)生的文檔,特別是數(shù)據(jù)流圖,是需求分析的出發(fā)點。在數(shù)據(jù)流圖中已經(jīng)給出系統(tǒng)必須完成的許多基本功能,在需求分析階段將仔細研究這些功能并進一步將它們具體化。在這個階段結(jié)束時交出的文檔中應(yīng)該包括詳細的數(shù)據(jù)流圖,數(shù)據(jù)字典和簡明的算法描述。需求分析的結(jié)果是系統(tǒng)開發(fā)的基礎(chǔ),是工程的成功和優(yōu)秀軟件產(chǎn)品的保證。因此,除了對目標(biāo)系統(tǒng)提出完整、準(zhǔn)確、清晰、具體的要求描述外,必須加強對軟件需求進行嚴(yán)格的審查驗證。一般說來,需求分析階段的任務(wù)包括下述幾方面。1.確定對系統(tǒng)的綜合需求對系統(tǒng)的綜合需求主要有:系統(tǒng)功能需求、系統(tǒng)性能需求、運行需求、將來可能提出的需求。系統(tǒng)分析人員與用戶協(xié)商,澄清模糊需求,刪除無法做到的需求,改正錯誤需求。對于系統(tǒng)功能需求,應(yīng)該劃分出系統(tǒng)必須完成的所有功能。而系統(tǒng)性能需求包括:響應(yīng)時間、精確度指標(biāo)需求、安全性等。運行需求集中表現(xiàn)為對系統(tǒng)運行時所處環(huán)境的需求。如軟硬件運行環(huán)境需求等。最后,對于將來可能提出的需求,應(yīng)該明確地列出那些雖然不屬于當(dāng)前系統(tǒng)開發(fā)范疇,但是根據(jù)分析將來很可能會提出來的需求。這樣做增強了被設(shè)計系統(tǒng)的可擴展性,在設(shè)計過程中對系統(tǒng)將來可能的擴充和修改做準(zhǔn)備,以便于需要時能比較容易地進行這種擴充和修改,更有利于系統(tǒng)維護。2.分析系統(tǒng)的數(shù)據(jù)需求任何一個軟件系統(tǒng)實際上都是信息處理系統(tǒng),系統(tǒng)必須處理的信息和系統(tǒng)應(yīng)該產(chǎn)生的信息在很大程度上決定了系統(tǒng)的結(jié)構(gòu)。分析系統(tǒng)的數(shù)據(jù)需求是由系統(tǒng)的信息流歸納抽象出數(shù)據(jù)元素組成,數(shù)據(jù)的邏輯關(guān)系,數(shù)據(jù)字典格式,數(shù)據(jù)模型。并以輸入/處理/輸出的結(jié)構(gòu)方式表示。因此,必須分析系統(tǒng)的數(shù)據(jù)需求,這是軟件需求分析的一個重要任務(wù)。3.提出系統(tǒng)的邏輯模型在理解當(dāng)前已存在系統(tǒng)結(jié)構(gòu)的基礎(chǔ)上,抽取其做什么的本質(zhì)。需要對當(dāng)前已存在系統(tǒng)的物理模型進行分析,區(qū)分本質(zhì)和非本質(zhì)因素,去掉那些非本質(zhì)因素就可獲得反映系統(tǒng)本質(zhì)的邏輯模型。在綜合上述分析的結(jié)果和明確目標(biāo)系統(tǒng)要做什么的基礎(chǔ)上,可以提出要設(shè)計的軟件系統(tǒng)的邏輯模型。具體做法是:首先確定目標(biāo)系統(tǒng)與當(dāng)前系統(tǒng)的邏輯差別;然后將變化部分看作是新的處理步驟,對功能圖(一般為數(shù)據(jù)流圖)及對象圖進行調(diào)整;最后由外及里對變化的部分進行分析,推斷其結(jié)構(gòu),獲得目標(biāo)系統(tǒng)的邏輯模型。通常用數(shù)據(jù)流圖、數(shù)據(jù)字典和主要的處理算法描述邏輯模型。4.修正系統(tǒng)開發(fā)計劃在經(jīng)過需求分析階段的前述工作之后,分析員對目標(biāo)系統(tǒng)有了更深入更具體的認(rèn)識,因此可以對系統(tǒng)的成本和進度做出更準(zhǔn)確的估計,在此基礎(chǔ)上應(yīng)該對開發(fā)計劃進行修正。5.開發(fā)原型系統(tǒng)在第一章中已介紹了幾種主要的軟件開發(fā)模型,許多方法都涉及到了原型系統(tǒng)問題,這里就是指開發(fā)原型系統(tǒng)。在許多工程產(chǎn)品的設(shè)計過程中經(jīng)常使用樣機。建造樣機的主要目的是:檢驗關(guān)鍵設(shè)計方案的正確性及系統(tǒng)是否真正滿足用戶的需要。對于軟件系統(tǒng)的開發(fā),使用原型系統(tǒng)的主要目的是,使用戶通過實踐獲得未來的系統(tǒng)將怎樣工作,從而可以更準(zhǔn)確地確定他們的要求。建立原型系統(tǒng)能夠解決下述問題:由于認(rèn)識能力的局限而不能預(yù)先指定所有要求;在用戶和系統(tǒng)分析員之間存在的通信鴻溝;用戶需要一個現(xiàn)實的系統(tǒng)模型,以便獲得實踐經(jīng)驗;而且在開發(fā)過程中重復(fù)和反復(fù)是必要的和不可避免的;采用原型系統(tǒng)策略也帶來了的成本增加副作用。但是,由于正確地提出用戶需求是軟件開發(fā)工程成功的基礎(chǔ),所以原型系統(tǒng)采用逐漸增多。尤其是目前較好的軟件開發(fā)工具的出現(xiàn),為快速建立軟件的原型系統(tǒng)建立了可實施的基礎(chǔ)。3.1.2需求分析的步驟在前面已介紹了需求分析的主要任務(wù),只有在需求分析中采取正確的步驟才能完成上述任務(wù),需求分析的步驟如下。1.調(diào)查研究分析人員與程序員共同研究系統(tǒng)數(shù)據(jù)的流程、調(diào)查用戶需求或查閱可行性報告、項目開發(fā)計劃報告,訪問現(xiàn)場,獲得當(dāng)前系統(tǒng)的具體模型,以IPO圖或DFD圖表示。把從外面輸入到系統(tǒng)中來的或者是通過計算由系統(tǒng)中產(chǎn)生出來的數(shù)據(jù)輸出。要確定輸出數(shù)據(jù)的元素組成及其來源,并沿數(shù)據(jù)流圖從輸出端往輸入端回溯,以確定每個數(shù)據(jù)元素的來源,定義有關(guān)的算法。但是,由于高層數(shù)據(jù)流圖不包括具體的細節(jié),因此沿數(shù)據(jù)流圖回溯時常遇到下述問題:為了得到某個數(shù)據(jù)元素需要用到數(shù)據(jù)流圖中目前還沒有的數(shù)據(jù)元素,或者得出這個數(shù)據(jù)元素需要用的算法不清楚。為了解決這些問題,通過用戶向其他相關(guān)人員研究,使分析員對目標(biāo)系統(tǒng)的認(rèn)識更深入更具體,系統(tǒng)中更多的數(shù)據(jù)元素被劃分出來,算法更清楚。把分析過程中得到的有關(guān)數(shù)據(jù)元素的信息記錄在數(shù)據(jù)字典中,把對算法的簡明描述記錄在IPO圖中,把通過分析而補充的數(shù)據(jù)流、數(shù)據(jù)存儲和處理,應(yīng)添加到數(shù)據(jù)流圖中。還有許多問題存在,如數(shù)據(jù)字典準(zhǔn)確性和完整性、算法的正確性和有沒有遺漏必要的處理或數(shù)據(jù)元素等。一個系統(tǒng)的詳細信息只能來源于直接在這個系統(tǒng)上工作的系統(tǒng)的用戶。因此,用戶對前一個分析步驟中得出的結(jié)果仔細地進行復(fù)查。用戶應(yīng)該注意傾聽分析員的報告,確定對目標(biāo)系統(tǒng)的認(rèn)識是否正確、有無遺漏,并及時糾正和補充分析員的認(rèn)識。復(fù)查過程驗證了已知的元素,補充了未知的元素,填補了文檔中的空白。追蹤數(shù)據(jù)流圖和復(fù)查系統(tǒng)的邏輯模型這兩個步構(gòu)成一個循環(huán)。對數(shù)據(jù)流圖的分析產(chǎn)生問題,這些問題也可能又引出新的問題,每經(jīng)過一次循環(huán)都會了解到未來的邏輯系統(tǒng)的更多細節(jié)。2.分析與綜合問題分析和方案的綜合是需求分析的第二步工作。分析員需從數(shù)據(jù)流和數(shù)據(jù)結(jié)構(gòu)出發(fā),逐步細化所有的軟件功能,找出系統(tǒng)各元素之間的聯(lián)系、接口特性和設(shè)計上的限制。通過分析確定滿足功能要求的程度,根據(jù)功能需求,性能需求,運行環(huán)境需求等,刪除其不合理的部分,增加其需要部分,最終給出目標(biāo)系統(tǒng)的詳細邏輯模型。在這個步中,分析和綜合工作反復(fù)地進行。在對現(xiàn)行問題期望的輸入和輸出信息進行分析的基礎(chǔ)上,分析員開始綜合出一個或多個解決方案,然后檢查它的工作是否符合軟件計劃中規(guī)定的范圍等等,再進行修改。對分析和綜合的過程將一直到分析員與用戶都可正確地制定該軟件的規(guī)格說明為止。經(jīng)過上述分析過程,分析員越來越深入地定義了系統(tǒng)中的數(shù)據(jù)和系統(tǒng)應(yīng)完成的功能。為了追蹤更詳細的數(shù)據(jù)流,分析員把數(shù)據(jù)流圖擴展到更低的層次。通過功能分解可以完成數(shù)據(jù)流圖的細化。在數(shù)據(jù)流圖中選出一個功能比較復(fù)雜的處理,并把它的功能分解成若干個子功能,較低層的子功能在一張新數(shù)據(jù)流圖上的處理,在這張新數(shù)據(jù)流圖上還包括數(shù)據(jù)存儲和數(shù)據(jù)流。應(yīng)注意下述兩條原則:①在分層細化時必須保持信息連續(xù)性,也就是說細化前后對應(yīng)功能的輸入/輸出數(shù)據(jù)必須相同;②當(dāng)進一步細化將實現(xiàn)一個具體地功能時,也就是當(dāng)把一個功能進一步分解成子功能后,為了完成這些子功能需要寫出的程序代碼時,就不應(yīng)該再分解了。3.書寫文檔經(jīng)過分析確定了系統(tǒng)必須具有的功能和性能,定義了系統(tǒng)中的數(shù)據(jù)并且簡略地描述了處理數(shù)據(jù)的主要算法。下一步應(yīng)該把分析的結(jié)果用正式的文檔記錄下來,作為最終軟件配置的一個組成成分。根據(jù)需求分析階段的基本任務(wù),在這個階段應(yīng)該完成下述四份文檔資料:(1)系統(tǒng)規(guī)格說明。主要描述目標(biāo)系統(tǒng)的概述、功能要求、性能要求、運行要求和將來可能提出的要求。在分析過程中得出的數(shù)據(jù)流圖是這個文檔的一個重要組成部分,用IPO圖或其他工具簡要描述的系統(tǒng)算法是文檔的另一個重要組成部分。此外,這個文檔中還應(yīng)包括用戶需求和系統(tǒng)功能之間的參照關(guān)系以及設(shè)計約束等。(2)數(shù)據(jù)要求。主要包括在需求分析建立的數(shù)據(jù)字典以及描繪數(shù)據(jù)結(jié)構(gòu)的層次方框圖或Warnier圖,還應(yīng)該包括對存儲信息(數(shù)據(jù)庫或普通文件)分析的結(jié)果。(3)用戶系統(tǒng)描述。這個文檔從用戶使用系統(tǒng)的角度描述系統(tǒng),相當(dāng)于一份初步的用戶手冊。內(nèi)容包括對系統(tǒng)功能和性能的扼要描述,使用系統(tǒng)的主要步驟和方法以及系統(tǒng)用戶的責(zé)任等。這個初步的用戶手冊使得未來的用戶能從使用的角度檢查該目標(biāo)系統(tǒng),因而比較易于判斷這個系統(tǒng)十分符合他們的需要。(4)修正的開發(fā)計劃。經(jīng)過需求分析階段的工作,分析員對目標(biāo)系統(tǒng)有了更深入更具體的認(rèn)識,因此可以對系統(tǒng)的成本和進度作出更準(zhǔn)確的估計,在此基礎(chǔ)上應(yīng)該對開發(fā)計劃進行修正。包括修正后的成本計劃、資源使用計劃和進度計劃等。4.需求分析評審作為需求分析階段工作的復(fù)查手段,應(yīng)該對功能的正確性、完整性和清晰性以及其他需求給予評價。3.1.3需求分析的原則目前已出現(xiàn)許多分析方法。雖然各種分析方法都有獨特的描述方法,但所有分析方法有共同的基本原則。1.能夠表達和理解問題的數(shù)據(jù)域和功能域軟件定義與開發(fā)的目的是實現(xiàn)數(shù)據(jù)處理,將一種形式的數(shù)據(jù)轉(zhuǎn)換成另一種形式的數(shù)據(jù)。其轉(zhuǎn)換過程必經(jīng)輸入、加工數(shù)據(jù)和產(chǎn)生結(jié)果數(shù)據(jù)等步驟,其數(shù)據(jù)域應(yīng)包括數(shù)據(jù)流、數(shù)據(jù)內(nèi)容和數(shù)據(jù)結(jié)構(gòu)。數(shù)據(jù)流是數(shù)據(jù)通過一個系統(tǒng)時的變化方式。輸入數(shù)據(jù)首先轉(zhuǎn)換成中間數(shù)據(jù),然后轉(zhuǎn)換成輸出結(jié)果數(shù)據(jù)。在此期間可以從已有的數(shù)據(jù)存儲(如磁盤文件或內(nèi)存緩沖區(qū))中引入附加數(shù)據(jù)。對數(shù)據(jù)進行轉(zhuǎn)換是程序中應(yīng)有的功能或子功能。兩個轉(zhuǎn)換功能之間的數(shù)據(jù)傳遞就確定了功能間的接口。數(shù)據(jù)內(nèi)容即數(shù)據(jù)項。2.按自頂向下、逐層分解問題系統(tǒng)太大太復(fù)雜很難理解。可以把問題以某種方式分解為多個較易理解的部分,并確定各部分間的接口,從而實現(xiàn)整體功能。在需求分析階段,軟件的功能域和信息域都能進一步的分解。這種分解可以是同一層次上的,稱為橫向分解;也可以是多層次的縱向分解。把一個功能分解成幾個子功能,并確定這些子功能與父功能的接口,就屬于橫向分解。但如果繼續(xù)分解,把某些子功能又分解為小的子功能,某個小的子功能又分解為更小的子功能,這就屬于縱向分解了。3.給出系統(tǒng)的邏輯視圖和物理視圖給出系統(tǒng)的邏輯表示又稱系統(tǒng)的邏輯視圖,物理表示又稱系統(tǒng)的物理視圖。這兩種視圖滿足處理需求所提出的邏輯限制條件和提出的物理限制條件必不可少。進而確定做怎樣的實現(xiàn)形式限制,功能限制及算法與數(shù)據(jù)限制。如數(shù)據(jù)字典,就對數(shù)據(jù)流的條目、文件條目、數(shù)據(jù)項條目及加工條目進行了具體的規(guī)定和限制。軟件需求的邏輯視圖給出軟件要達到的功能和要處理數(shù)據(jù)之間的關(guān)系,而不是實現(xiàn)的細節(jié)。例如,一個商店的銷售處理系統(tǒng)要從顧客那里獲取訂單,系統(tǒng)讀取訂單的功能并不關(guān)心訂單數(shù)據(jù)的物理形式和用什么設(shè)備讀入,也就是說無需關(guān)心輸入的機制,只是獲取顧客的訂單而已。類似的,系統(tǒng)中檢查庫存的功能只關(guān)心庫存文件的數(shù)據(jù)結(jié)構(gòu),而不關(guān)心在計算機中的具體存儲方式。軟件需求的邏輯描述是軟件設(shè)計的基礎(chǔ)。軟件需求的物理視圖給出處理功能和數(shù)據(jù)結(jié)構(gòu)的實際表示形式,這是由設(shè)備決定的。如一些軟件靠終端鍵盤輸入數(shù)據(jù),另一些軟件靠參數(shù)轉(zhuǎn)換設(shè)備提供數(shù)據(jù)。分析員必須弄清系統(tǒng)元素對軟件的限制,并考慮功能和信息結(jié)構(gòu)的物理表示。3.2需求分析的方法在這里,討論一下需求分析方法。需求分析方法包括對軟件的數(shù)據(jù)域和功能域的系統(tǒng)分析過程及其表示方法,并定義了系統(tǒng)邏輯視圖和物理視圖的表示方式。由于需求分析方法是由數(shù)據(jù)驅(qū)動的,所以提供了一種表示數(shù)據(jù)域的機制。分析員根據(jù)這種表示,確定軟件功能及其他特性,建立目標(biāo)系統(tǒng)的邏輯模型。數(shù)據(jù)域具有三種屬性:數(shù)據(jù)流、數(shù)據(jù)內(nèi)容和數(shù)據(jù)結(jié)構(gòu)。通常,一種需求分析方法總要利用其中的一種或幾種屬性。歸納起來,需求分析方法具有以下的性質(zhì)。(1)支持?jǐn)?shù)據(jù)域分析的機制

雖然每種分析方法進行數(shù)據(jù)域分析的方式不同,但它們有共同特點,即都直接或間接地與數(shù)據(jù)流、數(shù)據(jù)內(nèi)容或數(shù)據(jù)結(jié)構(gòu)等屬性有關(guān)。在一般情況下,數(shù)據(jù)流特征是將輸入轉(zhuǎn)換成輸出的變換功能過程來描述,數(shù)據(jù)內(nèi)容可以用數(shù)據(jù)字典表示,或者通過描述數(shù)據(jù)或數(shù)據(jù)對象的層次結(jié)構(gòu)隱含地表示。(2)功能表示的方法

功能用數(shù)據(jù)變換或加工來表示。每項功能可用規(guī)定的記號標(biāo)識。說明功能可以用自然語言文本,也可以用形式化的規(guī)格說明語言,還可以用上述兩種方式的混合方式(結(jié)構(gòu)化語言)。(3)接口的定義

接口的說明是數(shù)據(jù)表示和功能表示的結(jié)果。某個功能的流進和流出數(shù)據(jù)流應(yīng)是其他相關(guān)功能的流出或流入數(shù)據(jù)流。因此,通過數(shù)據(jù)流分析可以確定功能間的接口。(4)問題分解的機制

問題分解和抽象主要依靠分析員在不同抽象層次上表示數(shù)據(jù)域和功能域,以逐層細化的手段建立分層結(jié)構(gòu)來實現(xiàn)。即不僅都能表示這些功能,而且能在這個抽象層次上操縱這個功能。另外,所有的分析方法都提供一種逐層分解的機制,把總的功能劃分成一些子功能,每項子功能還可以在更低的一級抽象層次上表示。(5)邏輯視圖和物理視圖

大多數(shù)方法允許分析員在提出問題的邏輯解決方案之前先分析物理視圖,同一種表示法既可用來表示邏輯視圖,也可用來表示物理視圖。(6)系統(tǒng)抽象模型

為了比較精確地定義軟件需求,可建立待開發(fā)軟件的一個抽象的模型。用基于抽象模型描述軟件系統(tǒng)的功能和性能,形成軟件需求規(guī)格說明。這種抽象的模型是從外部現(xiàn)實世界的問題領(lǐng)域抽象而來,在高級層次上描述和定義系統(tǒng)的服務(wù)。

比較簡單的問題,不必建立抽象系統(tǒng)模型。系統(tǒng)模型可在分析員頭腦中形成,直接由分析員寫成規(guī)格說明。但對于較復(fù)雜的問題,必須建立形式化的抽象系統(tǒng)模型,才能準(zhǔn)確全面地反映問題領(lǐng)域中各種復(fù)雜的要求。

不同類型的問題有不同的需要解決的中心問題,因而需建立不同類型的系統(tǒng)模型。如數(shù)學(xué)軟件,設(shè)計的中心問題是算法,軟件人員的主要力量要用在數(shù)學(xué)模型算法的考慮上。而對于數(shù)據(jù)通信軟件,中心問題是數(shù)據(jù)傳送和過程控制,實現(xiàn)算法簡單,采用數(shù)據(jù)流模型比較合適。對于涉及大量數(shù)據(jù)的數(shù)據(jù)處理軟件,中心問題是數(shù)據(jù)處理,包括數(shù)據(jù)的采集、數(shù)據(jù)的傳送、存儲、變換、輸出等,一旦明確了數(shù)據(jù)結(jié)構(gòu),與它相關(guān)的算法就很簡單了,因此可以采用面向數(shù)據(jù)結(jié)構(gòu)的模型。

系統(tǒng)模型的建立過程是對現(xiàn)實世界中存在的有關(guān)實體和活動的抽象和精化,如圖3-2所示,包括觀察分析、模型表示和模型檢查三個階段。第一階段分析員和用戶合作,從各方面觀察現(xiàn)實世界中的有關(guān)實體和活動,建立理解的共同基準(zhǔn)。第二階段分析員和用戶在共同理解的基礎(chǔ)上建立系統(tǒng)模型,包括系統(tǒng)提供的各種系統(tǒng)服務(wù),模型表示的細節(jié):系統(tǒng)輸入、系統(tǒng)輸出、系統(tǒng)數(shù)據(jù)處理、系統(tǒng)控制等。第三階段進行模型檢查。除了靜態(tài)檢查之外,系統(tǒng)描述可以部分地模擬執(zhí)行,將執(zhí)行情況與對外部現(xiàn)實世界觀察得到的系統(tǒng)跟蹤信息進行對照,檢查模型是否達到要求。3.2.1面向數(shù)據(jù)流的需求分析方法

結(jié)構(gòu)化分析方法是面向數(shù)據(jù)流進行需求分析的方法。于20世紀(jì)70年代末由E.Yourdon等人提出,至今已得到廣泛應(yīng)用,結(jié)構(gòu)化分析方法的一些重要概念也應(yīng)用到其他方法中。結(jié)構(gòu)化分析方法使用數(shù)據(jù)流圖DFD與數(shù)據(jù)字典DD來描述,面向數(shù)據(jù)流問題的需求分析適合于數(shù)據(jù)處理類型軟件的需求描述。其核心思想是分解化簡問題,將物理與邏輯表示分開,對系統(tǒng)進行數(shù)據(jù)與邏輯的抽象。具體來說,結(jié)構(gòu)化分析方法就是用抽象模型的概念,按照軟件內(nèi)部數(shù)據(jù)傳遞、變換的關(guān)系,自頂向下逐層分解,直到找到滿足功能要求的可實現(xiàn)的軟件為止。由于這種方法利用圖形來表達需求,顯得清晰、層次分明,易于學(xué)習(xí)和掌握。但其不能表達復(fù)合邏輯的需求分析問題,也不能詳細表達加工。3.2.2數(shù)據(jù)流圖

數(shù)據(jù)流圖也簡稱為DFD(Data

Flow

Diagram的英文縮寫),它是描述數(shù)據(jù)處理過程的工具。

1.?dāng)?shù)據(jù)流圖的定義

數(shù)據(jù)流圖從數(shù)據(jù)傳遞和加工的角度,以圖形的方式描述數(shù)據(jù)流從輸入到輸出的傳輸變換過程。數(shù)據(jù)流圖是結(jié)構(gòu)化系統(tǒng)分析的主要工具,它表示了系統(tǒng)內(nèi)部信息的流向,并表示了系統(tǒng)的邏輯處理的功能。

2.?dāng)?shù)據(jù)流圖的特性

(1)抽象性在數(shù)據(jù)流圖中,具體的組織機構(gòu)、工作場所、物質(zhì)流等都去掉,僅剩下信息和數(shù)據(jù)存儲、流動、使用以及加工的情況。這有助于抽象地總結(jié)出信息處理的內(nèi)部規(guī)律。(2)概括性數(shù)據(jù)流圖把系統(tǒng)對各種業(yè)務(wù)的處理過程聯(lián)系起來考慮,形成一個總體,具有概括性。數(shù)據(jù)流圖描述的主體是抽象出來的數(shù)據(jù)。(3)層次性數(shù)據(jù)流圖具有層次性,一個系統(tǒng)將用多層次的數(shù)據(jù)流圖描述。3.數(shù)據(jù)流圖基本符號

(1)數(shù)據(jù)流圖中的主要圖形元素

數(shù)據(jù)流圖的基本圖形元素有4種,有時為了使數(shù)據(jù)流圖便于在計算機上輸入和輸出,免去畫曲線、斜線和圓的困難,常使用對應(yīng)的另一套符號,這兩套符號完全等價。如圖3-3所示。

圖3-3數(shù)據(jù)流圖基本圖形符號

在數(shù)據(jù)流圖中,數(shù)據(jù)流是沿箭頭方向傳送數(shù)據(jù)的通道,它們是在加工之間傳輸被加工數(shù)據(jù)的命名通道。也有連接數(shù)據(jù)存儲文件和加工沒有命名的數(shù)據(jù)通道。這些數(shù)據(jù)流雖然沒有命名,但因聯(lián)接的是有名加工和有名文件,所以其含義也是清楚的。同一數(shù)據(jù)流圖上不能有同名的數(shù)據(jù)流。多個數(shù)據(jù)流可以指向同一個加工,也可以從一個加工發(fā)出許多數(shù)據(jù)流。

加工是以數(shù)據(jù)結(jié)構(gòu)或數(shù)據(jù)內(nèi)容作為加工對象。加工的名字通常是一個動詞短語,簡明地表明完成的是什么加工。文件在數(shù)據(jù)流圖中起保存數(shù)據(jù)的作用,因而稱為數(shù)據(jù)存儲,它也可以是數(shù)據(jù)庫。指向文件的數(shù)據(jù)流可理解為寫入文件或查詢文件,從文件中引出的數(shù)據(jù)流可理解為從文件讀取數(shù)據(jù)或得到查詢結(jié)果。數(shù)據(jù)流圖中第1種元素是數(shù)據(jù)源點或匯點,它表示圖中要處理數(shù)據(jù)的輸入來源或處理結(jié)果要送往何處。由于它在圖中的出現(xiàn)僅僅是一個符號,并不需要以軟件的形式進行設(shè)計和實現(xiàn),因而,它只是數(shù)據(jù)流圖的外圍環(huán)境中的實體,故稱外部實體。在實際問題中它可能是人員、計算機外圍設(shè)備或是傳感裝置。

(2)數(shù)據(jù)流與加工之間的關(guān)系圖3-4數(shù)據(jù)流圖加工關(guān)系在數(shù)據(jù)流圖中,如果有兩個以上數(shù)據(jù)流指向一個加工,或從一個加工中引出兩個以上的數(shù)據(jù)流,這些數(shù)據(jù)流之間存在一定的關(guān)系。在圖3—4中給出描述這些關(guān)系所用符號及其含義。其中星號“*”表示相鄰的一對數(shù)據(jù)流同時出現(xiàn),則表示相鄰的兩數(shù)據(jù)流只取其一。(3)分層的數(shù)據(jù)流圖

為了表達數(shù)據(jù)處理過程的數(shù)據(jù)加工情況,用一層數(shù)據(jù)流圖是不夠的,需要按照問題的層次結(jié)構(gòu)進行逐步分解,并以多層的數(shù)據(jù)流圖反映這種結(jié)構(gòu)關(guān)系。先把整個數(shù)據(jù)處理過程暫且看成一個加工,它的輸入數(shù)據(jù)和輸出數(shù)據(jù)實際上反映了系統(tǒng)與外界環(huán)境的接口,這就是分層數(shù)據(jù)流圖的頂層。但僅此一層并未表明數(shù)據(jù)的加工要求,需要進一步細化。如果一個數(shù)據(jù)處理包括3個子系統(tǒng),就可以畫出表示這3個子系統(tǒng)1、2、3的加工及其相關(guān)的數(shù)據(jù)流。這是頂層下面的第一層數(shù)據(jù)流圖,繼續(xù)分解這3個子系統(tǒng),可得到第二層數(shù)據(jù)流圖,它們分別是子系統(tǒng)1、2和3的細化。這樣得到的多層數(shù)據(jù)流圖可十分清晰地表達整個數(shù)據(jù)加工系統(tǒng)的真實情況。對任何一層數(shù)據(jù)流圖來說,稱它的上層圖為父圖,在它下一層的圖則稱為子圖。在多層數(shù)據(jù)流圖中,可以把頂層流圖、底層流圖和中間層流圖區(qū)分開來。頂層流圖僅包含一個加工,它表示被開發(fā)系統(tǒng)。它的輸入流是該系統(tǒng)的輸入數(shù)據(jù),輸出流是系統(tǒng)的輸出數(shù)據(jù)。頂層流圖的作用在于表明被開發(fā)系統(tǒng)的范圍,以及它和周圍環(huán)境的數(shù)據(jù)交換關(guān)系。底層流圖是指其加工不須再做分解的數(shù)據(jù)流圖,其加工稱為“原子加工”。中間層流圖則表示對其上層父圖的細化。它的每一加工可以繼續(xù)細化,形成子圖。中間層次的多少視系統(tǒng)的復(fù)雜程度而定。4.?dāng)?shù)據(jù)流圖的用途

利用數(shù)據(jù)流圖把對現(xiàn)有系統(tǒng)的認(rèn)識或目標(biāo)系統(tǒng)的設(shè)想描繪出來,供有關(guān)人員審查確認(rèn)。由于在數(shù)據(jù)流圖中通常僅使用四種基本符號,而且不包含任何有關(guān)物理實現(xiàn)的細節(jié),因此,絕大多數(shù)用戶都可以理解和評價它。

數(shù)據(jù)流圖的作用主要有以下幾條:(1)系統(tǒng)分析員用這種工具可以自頂向下分析系統(tǒng)信息流程。(2)可在圖上畫出需要計算機處理的部分。(3)根據(jù)數(shù)據(jù)存貯,進一步作數(shù)據(jù)分析,向數(shù)據(jù)庫設(shè)計過渡。(4)根據(jù)數(shù)據(jù)流向,定出存取方式。(5)對應(yīng)一個處理過程,用相應(yīng)的語言、判定表等工具表達處理方法。

5.?dāng)?shù)據(jù)流圖的特點

(1)總體概念強,每一層都明確強調(diào)干什么,需要什么,給出什么。

(2)可以反映出數(shù)據(jù)的流向和處理過程。

(3)由于自頂向下分析,容易及早發(fā)現(xiàn)系統(tǒng)各部分的邏輯錯誤,也容易修正。

(4)容易與計算機處理相對照。

(5)不直觀,一般都要在作業(yè)流程分析的基礎(chǔ)上加以概括、抽象、修正來得到。

如果沒有計算機系統(tǒng)幫助的話,人工繪制太麻煩,工作量較大。

6.?dāng)?shù)據(jù)流圖畫法

(1)畫數(shù)據(jù)流圖的一般原則

畫數(shù)據(jù)流圖的基本原則是:就是自外向內(nèi),自頂向下,逐層細化,完善求精。具體步驟如下。

①先找系統(tǒng)的數(shù)據(jù)源點與匯點。它們是外部實體,由它們確定系統(tǒng)與外界的接口。

②找出外部實體的輸出數(shù)據(jù)流與輸入數(shù)據(jù)流。

③在圖的邊上畫出系統(tǒng)的外部實體。

④從外部實體的輸出數(shù)據(jù)流(即系統(tǒng)的源點)出發(fā),按照系統(tǒng)的邏輯需要,逐步畫出一系列邏輯加工,直到找到外部實體所需的輸入數(shù)據(jù)流(即系統(tǒng)的匯點),形成數(shù)據(jù)流的封閉。⑤按照下述的原則進行檢查和修改。

·數(shù)據(jù)流圖的主圖必須包括前述四種基本元素,缺一不可;

·數(shù)據(jù)流圖上所有圖形符號只限于前述四種基本圖形元素;

·數(shù)據(jù)流圖的主圖上的數(shù)據(jù)流必須封閉在外部實體之間,外部實體可以不只一個;

·每個加工至少有一個輸入數(shù)據(jù)流和一個輸出數(shù)據(jù)流;

·在數(shù)據(jù)流圖中,需按層給加工框編號。編號表明該加工處在哪一層,以及上下層的父圖與子圖的對應(yīng)關(guān)系。

·任何一個數(shù)據(jù)流子圖必須與它上一層的一個加工對應(yīng),兩者的輸入數(shù)據(jù)流和輸出數(shù)據(jù)流必須一致,此即父圖與子圖的平衡,表明了在細化過程中輸入與輸出不能有丟失與添加。

·圖上每個元素都必須有名字。表明數(shù)據(jù)流和數(shù)據(jù)文件是什么數(shù)據(jù),加工做什么事情。

·數(shù)據(jù)流圖中不可帶有控制流。因為數(shù)據(jù)流圖是實際業(yè)務(wù)流程的客觀映象,說明系統(tǒng)做什么而不是要表明系統(tǒng)如何做,因此不是系統(tǒng)的執(zhí)行順序,不是程序流程圖。

·初畫時可以忽略瑣碎的細節(jié),以集中精力于主要數(shù)據(jù)流。

⑥按照上述步驟,再從各加工出發(fā),畫出所需的子圖。

(2)數(shù)據(jù)流圖的分層方法

描述一個復(fù)雜的系統(tǒng),不可能用一張數(shù)據(jù)流圖畫出所有的數(shù)據(jù)流和處理邏輯,否則這張圖將極其龐大而復(fù)雜,因而難以繪制,更難以理解。所以必須用分層的方法將一個數(shù)據(jù)流圖分解成多層數(shù)據(jù)流圖來分別表示。一個分層的數(shù)據(jù)流圖由頂圖、底圖和中間層的數(shù)據(jù)流圖所組成。頂圖說明了系統(tǒng)的邊界,即系統(tǒng)的輸入和輸出的數(shù)據(jù)流,頂圖只有一張。底圖由一些不必再分解的處理邏輯組成,

圖3-5分層數(shù)據(jù)流圖這些處理邏輯稱為基本的處理邏輯。在頂圖和底圖之間是中間層。稱上層圖為下層圖的“父”圖,下層圖稱為上層圖的“子”圖。通過對層次的數(shù)據(jù)流圖的描述,一個復(fù)雜的系統(tǒng),可以按層次逐級分解,一直分解到最簡單、不需再分的基本處理邏輯為止,這樣對一個系統(tǒng)可以由粗到細逐級地分解,使用戶、系統(tǒng)分析員以及系統(tǒng)設(shè)計人員能對系統(tǒng)有一個從總體到具體,逐層地、清晰地描繪與理解一個復(fù)雜系統(tǒng)的邏輯。圖3-5是一個分層數(shù)據(jù)流圖的父圖和子圖示例。

(3)分層法繪制流程圖的幾個問題

①編號的設(shè)置

子圖的編號是父圖相應(yīng)的處理邏輯的編號。

子圖中處理邏輯編號由子圖號、小數(shù)點與局部號組成。如上例中,對應(yīng)父圖中3的子圖中的處理邏輯相應(yīng)的用3.1、3.2、3.3。

②父圖與子圖的平衡

子圖詳細地描述父圖中處理邏輯,因而子圖的輸入、輸出數(shù)據(jù)流應(yīng)該同父圖中處理邏輯的輸入、輸出數(shù)據(jù)流相一致。

③局部數(shù)據(jù)存貯

局部數(shù)據(jù)存貯在子圖中出現(xiàn)的數(shù)據(jù)存貯,可以不出現(xiàn)在父圖中,畫父圖時只需畫出處理邏輯之間的聯(lián)系,不必畫出各個處理邏輯內(nèi)部的細節(jié)。

④處理邏輯的分解與分細的程度

分得太細,則使得層次太多;分得太粗,則達不到分層的目的。

從管理的層次結(jié)構(gòu)原理來看,在分解一層時一般不宜超過7個邏輯。一個處理邏輯分解到基本處理邏輯為止。基本處理邏輯能表達系統(tǒng)所有的邏輯功能和必要的數(shù)據(jù)輸入與輸出,這些功能與數(shù)據(jù)的描述能使用戶清楚地理解,并且還能使以后的系統(tǒng)設(shè)計人員看到每一個處理邏輯,并據(jù)此能設(shè)計程序模塊實現(xiàn)這些邏輯功能。

⑤由左到右繪制數(shù)據(jù)流圖

先從左側(cè)開始,標(biāo)出外部實體。外部實體通常是系統(tǒng)主要的數(shù)據(jù)來源。然后畫出由該外部實體產(chǎn)生的數(shù)據(jù)流和相應(yīng)的處理邏輯。如果需要將數(shù)據(jù)保存,則在數(shù)據(jù)流圖上加上數(shù)據(jù)存貯。最后畫出接受系統(tǒng)輸出信息的系統(tǒng)的外部實體。

⑥繪制數(shù)據(jù)流圖時,可以先忽略次要的信息

這一點相當(dāng)重要且易被忽視,不要試圖僅用一兩層數(shù)據(jù)流圖就想描述整個系統(tǒng)。這樣不僅會使數(shù)據(jù)流圖缺乏條理而給后來的使用造成不便,而且也容易在繪制時造成錯誤。繪制第0層與第1層的草圖時,應(yīng)該集中反映系統(tǒng)中主要的、正常的邏輯功能以及與之相關(guān)的數(shù)據(jù)交換,然后再將其余次要的處理邏輯補上,完成一張完整的數(shù)據(jù)流圖。

⑦合理地命名

數(shù)據(jù)流圖中對每一個元素都要命名,恰當(dāng)?shù)孛兄跀?shù)據(jù)流圖的理解與閱讀。命名原則如下:

·為了避免引起錯覺,為每個元素所取的名字要能反映該元素的整體性內(nèi)容,而不只是它的部分內(nèi)容。

·每個元素的名字都能有唯一地標(biāo)識該元素。

·避免用空洞的名字,要具體的含義。

·如果出現(xiàn)很難為某個數(shù)據(jù)流或處理邏輯命名時,這往往是數(shù)據(jù)流圖分解不當(dāng)?shù)恼髡祝芍匦路纸狻?/p>

7.?dāng)?shù)據(jù)流圖的繪制與其它流程圖的差別(1)數(shù)據(jù)流圖與系統(tǒng)流程圖的區(qū)別系統(tǒng)流程圖中不僅有數(shù)據(jù)流,還有物流、資金流。數(shù)據(jù)流圖將物流與資金流排除在外,或者將它們抽象為數(shù)據(jù)流的形式。也就是說數(shù)據(jù)流圖僅以數(shù)據(jù)流的形態(tài)來反映一個組織中整個管理業(yè)務(wù)的過程。

(2)數(shù)據(jù)流與程序流程圖的區(qū)別

程序流程圖中的處理框之間有嚴(yán)格的時間上的順序,也就先執(zhí)行哪個處理框,起始點以及終止點等。而數(shù)據(jù)流圖只反映數(shù)據(jù)的流向、處理邏輯和必要的數(shù)據(jù)存貯,它不反映處理邏輯的先后的時間順序。

(3)數(shù)據(jù)流與程序結(jié)構(gòu)圖的區(qū)別

程序結(jié)構(gòu)圖反映模塊之間的控制關(guān)系,以及模塊之間的調(diào)用關(guān)系,而數(shù)據(jù)流圖則不反映控制關(guān)系、調(diào)用關(guān)系、控制流,只畫數(shù)據(jù)流。

(4)數(shù)據(jù)流與控制流的區(qū)別

如果某條線上沒有數(shù)據(jù)(指表示事物的信息,而不是控制信號)流過,則是控制流。

8.實例

下面通過一個簡單的例子具體說明如何畫數(shù)據(jù)流圖。分析一家公司的營銷系統(tǒng)。其采購部門每天須要按銷售部門提供的定貨單(須定的貨物)向供應(yīng)商采購貨物。每種貨物的數(shù)量都存放在數(shù)據(jù)存儲貨物庫存中,銷售和采購使每種貨物數(shù)量發(fā)生的變化能夠在此數(shù)據(jù)存儲中及時被反映出來。而資金的匯總、核對等工作由其會計部門處理。這樣此系統(tǒng)的頂層結(jié)構(gòu)就大致可以分析出來。如圖3-6所示,為本系統(tǒng)的第一層數(shù)據(jù)流圖。

為了更加清晰的描述系統(tǒng),可把頂層數(shù)據(jù)流圖的三個主要加工:銷售、采購、會計再進行逐步分解,這樣形成第二層數(shù)據(jù)流圖。首先分析銷售加工:先根據(jù)顧客的定貨單和貨物目錄確定定貨,在這期間要修改和維護貨物目錄和顧客兩個數(shù)據(jù)存儲。對于正當(dāng)?shù)亩ㄘ?,目前有貨可發(fā)的則直接產(chǎn)生發(fā)貨單準(zhǔn)備發(fā)貨;而如果暫時缺貨則產(chǎn)生暫存定貨單,等采購到所需的貨物再產(chǎn)生發(fā)貨單。按顧客要求發(fā)貨后,要修改貨物庫存、銷售歷史和應(yīng)收款帳目這三個數(shù)據(jù)存儲。對于庫存和銷售歷史的變化要分別編寫庫存檢索和庫存銷售報表提供給經(jīng)理,其數(shù)據(jù)流圖如圖3-7所示。圖3-7銷售系統(tǒng)再來分析采購加工:首先根據(jù)暫存定貨單和貨物的庫存情況確定須定的貨物,產(chǎn)生須定貨物的數(shù)據(jù)存儲。對須定貨物按供應(yīng)商匯總,產(chǎn)生采購定貨單分別發(fā)給不同的供應(yīng)商。如果供應(yīng)商發(fā)出的發(fā)貨單正確無誤,提貨后向銷售部門發(fā)出到貨通知并修改庫存、應(yīng)付款帳目和須定貨物數(shù)量。這樣為以后的定貨提供依據(jù)。其數(shù)據(jù)流圖如圖3-8所示。最后,分析會計加工:顧客付款后應(yīng)得到收據(jù),收款處理還應(yīng)該修改數(shù)據(jù)存儲。應(yīng)收款帳目。而對供應(yīng)商的應(yīng)付款通知進行核對后要進行付款處理。這個操作要修改另一數(shù)據(jù)存儲:應(yīng)付款帳目。這時要根據(jù)應(yīng)收款帳目和應(yīng)付款帳目的修改情況進行修改總帳目的處理。最后把總帳目的變化情況編制成會計報表提交給經(jīng)理,其數(shù)據(jù)流圖如圖3-9所示。

圖3-9會計系統(tǒng)

以上兩層四張數(shù)據(jù)流圖一起組成了這家公司營銷系統(tǒng)的分層數(shù)據(jù)流圖。第二層的加工比第一層要細,且為足夠簡單的“基本加工”,不必再分解。

3.2.3數(shù)據(jù)字典數(shù)據(jù)字典的作用是在軟件分析和設(shè)計的過程中提供關(guān)于數(shù)據(jù)的描述信息。在數(shù)據(jù)流圖上描述了系統(tǒng)由哪幾部分組成,各部分之間的聯(lián)系等,但并未說明各個元素含義與包含的內(nèi)容。數(shù)據(jù)流圖和數(shù)據(jù)字典共同構(gòu)成系統(tǒng)的邏輯模型,沒有數(shù)據(jù)字典數(shù)據(jù)流圖就不嚴(yán)格,然而沒有數(shù)據(jù)流圖數(shù)據(jù)字典也難以發(fā)揮作用。只有數(shù)據(jù)流圖對數(shù)據(jù)流圖中每個元素的精確定義放在一起,才能共同構(gòu)成系統(tǒng)的規(guī)格說明。

1.?dāng)?shù)據(jù)字典的定義

數(shù)據(jù)字典是關(guān)于數(shù)據(jù)的信息的集合,對數(shù)據(jù)流圖中的各個元素作完整的定義與說明,是數(shù)據(jù)流圖的補充工具。數(shù)據(jù)流圖和數(shù)據(jù)字典共同構(gòu)成系統(tǒng)的邏輯模型,沒有數(shù)據(jù)字典數(shù)據(jù)流圖就不嚴(yán)格,然而沒有數(shù)據(jù)流圖數(shù)據(jù)字典也難于發(fā)揮作用。只有數(shù)據(jù)流圖和對數(shù)據(jù)流圖中每個元素的精確定義放在一起,才能共同構(gòu)成系統(tǒng)的規(guī)格說明。

2.?dāng)?shù)據(jù)字典的內(nèi)容

一般說來,數(shù)據(jù)字典應(yīng)該由對下列六類元素的定義組成。

(l)數(shù)據(jù)流在一個數(shù)據(jù)流圖上,數(shù)據(jù)按數(shù)據(jù)流為單位傳輸。主要內(nèi)容有;

①數(shù)據(jù)流名稱及其稱號表示。②數(shù)據(jù)流的來源:一個外部實體、處理邏輯、數(shù)據(jù)存貯。③數(shù)據(jù)流的去處:一個外部實體。④數(shù)據(jù)流的組成:一個數(shù)據(jù)流可能包括若干個數(shù)據(jù)結(jié)構(gòu),若只有一個數(shù)據(jù)結(jié)構(gòu),就不需要專門定義。⑤數(shù)據(jù)流的流通量:單位時間的傳輸次數(shù)。⑥高峰時期的流通量:業(yè)務(wù)的頻繁程度和時間有關(guān)。

(2)數(shù)據(jù)項數(shù)據(jù)項也稱數(shù)據(jù)元素,是不可再分的數(shù)據(jù)最小組成單位,主要內(nèi)容有:①數(shù)據(jù)項名稱及編號:數(shù)據(jù)項名稱必須唯一地標(biāo)識這個數(shù)據(jù)項,以區(qū)別于其他數(shù)據(jù)項;給數(shù)據(jù)項取名時,要反映該數(shù)據(jù)項的含義,易于他人理解與記憶。②別名:同一數(shù)據(jù)項的名稱可能不止一個,稱為別名。③取值的范圍和取值的含義④數(shù)據(jù)項的長度:指數(shù)據(jù)項所包含的字符或數(shù)字的位數(shù)。

(3)數(shù)據(jù)結(jié)構(gòu)數(shù)據(jù)結(jié)構(gòu)描述了某些數(shù)據(jù)項之間的關(guān)系。一個數(shù)據(jù)結(jié)構(gòu)可以由若干個數(shù)據(jù)項組成,也可以由若干個數(shù)據(jù)組成,也可以由若干個數(shù)據(jù)項和數(shù)據(jù)結(jié)構(gòu)組成。主要內(nèi)容包括如下。①數(shù)據(jù)結(jié)構(gòu)的名稱及其編號②數(shù)據(jù)結(jié)構(gòu)的組成:如果是一個簡單的數(shù)據(jù)結(jié)構(gòu),只要列出它所包含的數(shù)據(jù)項即可。如果是一個嵌套的數(shù)據(jù)結(jié)構(gòu),只需列出它所包含的數(shù)據(jù)結(jié)構(gòu)名稱,因為這些數(shù)據(jù)結(jié)構(gòu)同樣在數(shù)據(jù)字典中有定義。例如:對于顧客的訂貨單就包括:①訂貨單標(biāo)識:訂貨單編號、訂貨單日期②顧客檔案:顧客名稱、顧客地址、聯(lián)系人姓名、電話、開戶銀行、帳號③配件詳情:配件名稱、規(guī)格、訂貨數(shù)量

(4)數(shù)據(jù)存貯數(shù)據(jù)存貯是數(shù)據(jù)結(jié)構(gòu)停留或保存的場所。主要內(nèi)容:①數(shù)據(jù)存貯的名稱及其編號:在數(shù)據(jù)流程圖中對數(shù)據(jù)存貯給以命名,并編上一個唯一的編號。②流入、流出的數(shù)據(jù)流:流入的數(shù)據(jù)流指出其來源,流出的數(shù)據(jù)流指出其去向。③數(shù)據(jù)存貯的組成:指它所包含的數(shù)據(jù)項或數(shù)據(jù)結(jié)構(gòu)。例如:①數(shù)據(jù)存貯名稱:銷售歷史②編號:F05-01③簡述:公司從月初到目前為止所有配件的銷售量。④流入的數(shù)據(jù)流:“顧客的發(fā)貨單”,來源是“產(chǎn)生發(fā)貨單”處理邏輯。⑤流出的數(shù)據(jù)流:“銷售量”,去向是“產(chǎn)生銷售報表”處理邏輯。⑥數(shù)據(jù)存貯的組成:配件編號+日期+銷售量

(5)處理邏輯。主要內(nèi)容:①處理邏輯的名稱及編號②簡述:對處理邏輯的簡明描述,其目的是使人了解這個處理邏輯是做什么用的。③處理邏輯的輸入和輸出。④處理邏輯的主要功能⑤處理邏輯的小說明(文檔之一)處理邏輯小說明對處理邏輯的功能作明確的描述,詳細地描述其輸入/輸出的數(shù)據(jù)流,以及這些數(shù)據(jù)的基本轉(zhuǎn)換路徑和策略,它補充了數(shù)據(jù)字典的不足。目前較流行的表達處理邏輯小說明的工具有:結(jié)構(gòu)式語言、判斷樹、判斷表等。

(6)外部實體外部實體是系統(tǒng)的“人-機”界面,也就是系統(tǒng)的數(shù)據(jù)流由外部實體流入,或者系統(tǒng)的數(shù)據(jù)向外部流出。主要內(nèi)容:①外部實體的名稱及編號②與外部實體有關(guān)的數(shù)據(jù)流例如:①外部實體名稱:供應(yīng)商②編號:GS03-22③簡述:向本公司供應(yīng)貨物的個人和單位④有關(guān)的數(shù)據(jù)流:從外部實體流入:D01-11“發(fā)貨單”D01-12“收據(jù)”、輸出給外部實體:D01-01“訂貨單”D01-05“付款單”

除了數(shù)據(jù)定義之外,數(shù)據(jù)字典中還應(yīng)該包含關(guān)于數(shù)據(jù)的一些其他信息。典型的情況是,在數(shù)據(jù)字典中記錄數(shù)據(jù)元素的下列信息:一般信息(名字,別名,描述等等),定義(數(shù)據(jù)類型,長度,結(jié)構(gòu)等等),使用特點(值的范圍,使用頻率,使用方式——輸入/輸出/本地,條件值等等),控制信息(來源,用戶,使用它的程序,改變權(quán),使用權(quán)等等)和分組信息(父結(jié)構(gòu),從屬結(jié)構(gòu),物理位置——記錄、文件和數(shù)據(jù)庫等等)。

數(shù)據(jù)元素的別名就是該元素的其他等價的名字,出現(xiàn)別名主要有下述三個原因:

①對于同樣的數(shù)據(jù),不同的用戶使用了不同的名字;

②一個分析員在不同時期對同一個數(shù)據(jù)使用了不同的名字;

③兩個分析員分別分析同一個數(shù)據(jù)流時,使用了不同的名字。

雖然應(yīng)該盡量減少出現(xiàn)別名,但是不可能完全消除別名。

3.定義數(shù)據(jù)的方法

大多數(shù)復(fù)雜事物的定義方法,都是用被定義的事物的成分的某種組合表示這個事物,這些組成成分又由更低層的成分的組合來定義。從這個意義上說,定義就是自頂向下的分解,所以數(shù)據(jù)字典中的定義就是對數(shù)據(jù)自頂向下的分解。一般說來,當(dāng)分解到不需要進一步定義,每個和工程有關(guān)的人也都清楚其含義的元素時,這種分解過程就完成了。

由數(shù)據(jù)元素組成數(shù)據(jù)的方式只有下述三種基本類型;

(l)順序:即以確定次序連接兩個或多個分量;

(2)選擇:從兩個或多個可能的元素中選取一個;(3)重復(fù):指定的分量重復(fù)零次或多次;(4)可選:一個分量是可有可無的(重復(fù)零次或一次)。

可以使用上述前三種關(guān)系算符定義數(shù)據(jù)字典中的任何條目。為了說明重復(fù)次數(shù),重復(fù)算符通常和重復(fù)次數(shù)的上下限同時使用(當(dāng)上下限相同時表示重復(fù)次數(shù)固定)。當(dāng)重復(fù)的上下限分別為1和0時,可以用重復(fù)算符表示某個分量是可選的(可有可無的)。但是,“可選”是由數(shù)據(jù)元素組成數(shù)據(jù)時一種常見的方式,把它單獨列為一種算符可以使數(shù)據(jù)字典更清晰一些。因此,增加了上述的第四種關(guān)系算符。

雖然可以使用自然語言描述由數(shù)據(jù)元素組成數(shù)據(jù)的關(guān)系,但是為了更加清晰簡潔起見,建議采用下列符號:

=意思是等價于(或定義為);

+意思是和(即,連接兩個分量);

[]意思是或(即,從方括號內(nèi)列出的若干個分量中選擇一個);

{}意思是重復(fù)(即,重復(fù)花括號內(nèi)的分量);

()意思是可選(即,圓括號里的分量可有可無)。常常使用上限和下限進一步注釋表示重復(fù)的花括號。一種注釋方法是在開括號的左邊用上角標(biāo)和下角標(biāo)分別表明重復(fù)的上限和上限;另一種注釋方法是在開括號左側(cè)標(biāo)明重復(fù)的下限,在閉括號的右側(cè)標(biāo)明重復(fù)的上限。例如:

在方括號中列出的供選擇的分量可以從上而下排成若干行,也可以寫成一行中間用“|”號分開。例如下面兩種寫法是等價的。

例子:如數(shù)據(jù)流:發(fā)票的組成為學(xué)號,姓名,發(fā)票項,書費合計,則可定義為:發(fā)票=(學(xué)號)+姓名+{發(fā)票項}+書費合計學(xué)號=5{數(shù)字}5

*如:1205,2035*發(fā)票項=書號+單價+數(shù)量+總價書號={文字}+3{數(shù)字}3*如:英語001,軟件工程002,編譯原理012*

從上面例子可以看出對于較復(fù)雜的數(shù)據(jù)流,分層描述更為清晰。

4.?dāng)?shù)據(jù)字典的用途

數(shù)據(jù)字典是分析階段重要的工具。在數(shù)據(jù)字典中建立的定義有助于改進分析員和用戶之間的通信,對數(shù)據(jù)的嚴(yán)密的定義有助于改進在不同的開發(fā)人員或不同的開發(fā)小組之間的通信。如果要求所有開發(fā)人員都根據(jù)公共的數(shù)據(jù)字典描述數(shù)據(jù)和設(shè)計模塊,則能避免許多麻煩的接口問題。

5.?dāng)?shù)據(jù)字典的實現(xiàn)

實現(xiàn)數(shù)據(jù)字典有三種途徑;全人工過程,全自動化過程(利用數(shù)據(jù)字典處理程序)和混合過程(用正文編輯程序,報告生成程序等已有的實用程序幫助人工過程)。不論使用哪種途徑實現(xiàn)的數(shù)據(jù)字典都應(yīng)該具有下述特點

(1)通過名字能方便地查閱數(shù)據(jù)的定義;

(2)沒有冗余;

(3)盡量不重復(fù)在規(guī)格說明的其他組成部分中已經(jīng)出現(xiàn)的信息;

(4)容易更新和修改;

(5)能單獨處理描述每個數(shù)據(jù)元素的信息;

(6)定義的書寫方法簡單方便而且嚴(yán)格。

如果暫時還沒有自動的數(shù)據(jù)字典處理程序,建議采用卡片形式書寫數(shù)據(jù)字典,每張卡片上保存描述一個數(shù)據(jù)元素的信息。這種做法較好地實現(xiàn)了上述要求,特別是更新和修改起來很方便,能夠單獨處理每個數(shù)據(jù)元素的信息。每張卡片上主要應(yīng)該包含下述信息:

名字、別名、描述、定義、位置。

當(dāng)開發(fā)過程進展到能夠知道數(shù)據(jù)元素的控制信息和使用特點時,把這些信息記錄在卡片的背面。

本節(jié)數(shù)據(jù)流圖的實例中幾個數(shù)據(jù)元素的字典卡片如下。

名稱:定貨單

編號:D01-05

描述:送交采購員的需要定貨的貨

物表

定義:定貨單=貨物編號+貨物名稱

+定貨數(shù)量+貨物單價+供應(yīng)

商+0{備用供應(yīng)商}3

位置:在打印機輸出

名稱:銷售歷史

編號:F05-01

描述:公司從月初到目前為止所

有配件的銷售量。

定義:配件編號+日期+銷售量

位置:銷售庫存報表3.3圖形工具在描繪復(fù)雜的關(guān)系時,圖形比文字直觀、一目了然。下面簡要介紹在需求分析階段常用到的三種圖形工具,即層次方框圖、Warnier圖、IPO圖。3.3.1層次方框圖

層次方框圖是用具有多層次的樹形結(jié)構(gòu)的矩形框描述數(shù)據(jù)的層次結(jié)構(gòu)。樹形結(jié)構(gòu)的頂層是一個單獨的矩形框,它代表完整的數(shù)據(jù)結(jié)構(gòu),下面的各層矩形框代表這個數(shù)據(jù)的子集,最底層的各個框代表組成這個數(shù)據(jù)的實際的、不能再分割的元素的數(shù)據(jù)元素。

例如,某計算機公司全部產(chǎn)品的數(shù)據(jù)結(jié)構(gòu)如圖3-10所示.這家公司的產(chǎn)品由硬件、軟件和服務(wù)三類產(chǎn)品組成,軟件產(chǎn)品又分為系統(tǒng)軟件和應(yīng)用軟件,系統(tǒng)軟件又進一步分為操作系統(tǒng)、編譯程序和軟件工具,......。

圖3-10某計算機公司全部產(chǎn)品的數(shù)據(jù)結(jié)構(gòu)隨著結(jié)構(gòu)的精細化,層次方框圖對數(shù)據(jù)結(jié)構(gòu)也描繪的越來越詳細,這種模式非常適合于需求分析階段的需要。系統(tǒng)分析員從對頂層信息的分類開始,沿圖中每條路徑反復(fù)細化,直到確定了數(shù)據(jù)結(jié)構(gòu)的全部細節(jié)為止。3.3.2Warnier圖

法國計算機科學(xué)家Warnier提出了表示信息層次結(jié)構(gòu)的一種圖形工具。與層次方框圖類似,Warnier圖也用樹形結(jié)構(gòu)描繪信息,但是這種圖形工具比層次方框圖提供了更豐富的描繪能力。

用Warnier圖可以表明信息的邏輯組織,它可以指出一類信息或一個信息量是重復(fù)出現(xiàn)的,也可以表示特定信息在某一類信息中是有條件出現(xiàn)的。因為重復(fù)和條件約束是說明軟件處理的基礎(chǔ),所以很容易把Warnier圖變成軟件設(shè)計的工具。

圖3-11是用Warnier圖描繪一類軟件產(chǎn)品的例子,它說明了這種圖形工具的用法。圖中的花括號用來區(qū)分?jǐn)?shù)據(jù)結(jié)構(gòu)的層次,在一個花括號中的所有名字都屬于一類信息;異或信息⊕表明一類信息或者一個數(shù)據(jù)元素在一定條件下才出現(xiàn),而且在這個符號上、下方的兩個名字所代表的數(shù)據(jù)只能出現(xiàn)一個;在一個名字下面(或右邊)的括號中的數(shù)字表明了這個名字所代表的信息類(或元素)在這個數(shù)據(jù)結(jié)構(gòu)中重復(fù)出現(xiàn)的次數(shù)。3.3.3IPO圖IPO圖是輸入/處理/輸出圖的簡稱,它是美國IBM公司提出的一種圖形工具,能方便的描述輸入數(shù)據(jù)\對數(shù)據(jù)的處理和輸出數(shù)據(jù)的關(guān)系。IPO圖使用的基本符號少而簡單,因此很容易學(xué)會使用這種工具。它的基本形式是在左邊的框中列出有關(guān)的輸入數(shù)據(jù),在中間的框中列出主要的處理,在右邊的框中列出產(chǎn)生的輸出數(shù)據(jù)。處理框中列出的處理的順序,但是用這些基本符號還不足以精確描述執(zhí)行處理的詳細情況。圖3-12是一個主文件更新的例子,通過此例可以加快理解IPO圖的用法。

3.4需求規(guī)格說明與評審

應(yīng)當(dāng)清晰準(zhǔn)確的描述已確定的需求。通常把描述需求的文檔叫做軟件需求規(guī)格說明書。為了確切表達用戶對軟件的輸入輸出要求,還需要制定數(shù)據(jù)要求說明書及編寫初步的用戶手冊,側(cè)重反映被開發(fā)軟件的用戶界面和用戶使用的具體要求。此外,根據(jù)在需求分析階段對系統(tǒng)的進一步分析,從目標(biāo)系統(tǒng)的精細模型出發(fā),可以更準(zhǔn)確地估計所開發(fā)項目的成本與進度,從而修改、完善與確定軟件開發(fā)實施計劃。3.4.1需求規(guī)格說明的主要內(nèi)容軟件需求規(guī)格說明作為分析結(jié)果,它是軟件開發(fā),軟件驗收和管理的依據(jù)。因此,必須特別重視這一項工作,否則將可能要付出很大代價。軟件需求規(guī)格說明的一般格式如下。

-------------------------------------------------------------------------

1.引言

(1)編寫目的(闡明編寫需求說明書的目的,指明讀者對象。)

(2)項目背景(應(yīng)包括:項目的委托單位、開發(fā)單位和主管部門;該軟件系統(tǒng)與其他系統(tǒng)的關(guān)系。)

(3)定義(列出文檔中所用到的專門術(shù)語的定義和縮寫詞的原文。)

(4)參考資料(可包括:項目經(jīng)核準(zhǔn)的計劃任務(wù)書、合同或上級機關(guān)的批文;項目開發(fā)計劃;文檔所引用的資料、標(biāo)準(zhǔn)和規(guī)范。列出這些資料的作者、標(biāo)題、編號、發(fā)表日期、出版單位或資料來源。)

2.任務(wù)概述

(1)目標(biāo)

(2)運行環(huán)境

(3)條件與限制

3.?dāng)?shù)據(jù)描述

(1)靜態(tài)數(shù)據(jù)

(2)動態(tài)數(shù)據(jù)(包括輸入數(shù)據(jù)和輸出數(shù)據(jù)。)

(3)數(shù)據(jù)庫描述(給出使用數(shù)據(jù)庫的名稱和類型。)

(4)數(shù)據(jù)詞典

(5)數(shù)據(jù)采集

4.功能要求

(1)功能劃分

(2)功能描述

5.性能需求

(1)數(shù)據(jù)精確度

(2)時間特性(如響應(yīng)時間、更新處理時間、數(shù)據(jù)轉(zhuǎn)換與傳輸時間、運行時間等。)

(3)適應(yīng)性(在操作方式、運行環(huán)境、與其他軟件的接口以及開發(fā)計劃等發(fā)生變化時,應(yīng)具有的適應(yīng)能力。)

6.運行需求

(1)用戶界面(如屏幕格式、報表格式、菜單格式、輸入輸出時間等。)

(2)硬件接口

(3)軟件接口

(4)故障處理

7.其他要求

如可使用性、安全保密、可維護性、可移植性等

8.附錄

---------------------------------------------------------------------------3.4.2需求分析的評審需求分析階段的工作結(jié)果是開發(fā)軟件系統(tǒng)的重要基礎(chǔ),大量統(tǒng)計數(shù)字表明,軟件系統(tǒng)中15%的錯誤來源于錯誤的需求。因此,軟件需求說明書完成以后,需要認(rèn)真進行技術(shù)評審和修改。作為需求分析階段工作的復(fù)查手段,在需求分析的最后一步,應(yīng)該對功能的正確性、完整性和清晰性,以及其他需求給予評價。評審的主要內(nèi)容是:·系統(tǒng)定義的目標(biāo)是否與用戶的要求一致;·系統(tǒng)需求分析階段提供的文檔資料是否齊全;·文檔中的所有描述是否完整、清晰、準(zhǔn)確反映用戶要求;·與所有其他系統(tǒng)成分的重要接口是否都已經(jīng)描述;·所開發(fā)項目的數(shù)據(jù)流與

溫馨提示

  • 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)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論