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

下載本文檔

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

文檔簡(jiǎn)介

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

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

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

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

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

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

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

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

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

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

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

數(shù)據(jù)流圖也簡(jiǎn)稱(chēng)為DFD(Data

Flow

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

(4)容易與計(jì)算機(jī)處理相對(duì)照。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

⑥按照上述步驟,再?gòu)母骷庸こ霭l(fā),畫(huà)出所需的子圖。

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

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

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

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

①編號(hào)的設(shè)置

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

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

②父圖與子圖的平衡

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

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

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

④處理邏輯的分解與分細(xì)的程度

分得太細(xì),則使得層次太多;分得太粗,則達(dá)不到分層的目的。

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

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

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

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

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

⑦合理地命名

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

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

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

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

·如果出現(xiàn)很難為某個(gè)數(shù)據(jù)流或處理邏輯命名時(shí),這往往是數(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ù)流的形式。也就是說(shuō)數(shù)據(jù)流圖僅以數(shù)據(jù)流的形態(tài)來(lái)反映一個(gè)組織中整個(gè)管理業(yè)務(wù)的過(guò)程。

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

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

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

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

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

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

8.實(shí)例

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

(2)沒(méi)有冗余;

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

(4)容易更新和修改;

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

(6)定義的書(shū)寫(xiě)方法簡(jiǎn)單方便而且嚴(yán)格。

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

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

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

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

名稱(chēng):定貨單

編號(hào):D01-05

描述:送交采購(gòu)員的需要定貨的貨

物表

定義:定貨單=貨物編號(hào)+貨物名稱(chēng)

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

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

位置:在打印機(jī)輸出

名稱(chēng):銷(xiāo)售歷史

編號(hào):F05-01

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

有配件的銷(xiāo)售量。

定義:配件編號(hào)+日期+銷(xiāo)售量

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

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

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

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

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

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

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

3.4需求規(guī)格說(shuō)明與評(píng)審

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

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

1.引言

(1)編寫(xiě)目的(闡明編寫(xiě)需求說(shuō)明書(shū)的目的,指明讀者對(duì)象。)

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

(3)定義(列出文檔中所用到的專(zhuān)門(mén)術(shù)語(yǔ)的定義和縮寫(xiě)詞的原文。)

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

2.任務(wù)概述

(1)目標(biāo)

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

(3)條件與限制

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

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

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

(3)數(shù)據(jù)庫(kù)描述(給出使用數(shù)據(jù)庫(kù)的名稱(chēng)和類(lèi)型。)

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

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

4.功能要求

(1)功能劃分

(2)功能描述

5.性能需求

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

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

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

6.運(yùn)行需求

(1)用戶(hù)界面(如屏幕格式、報(bào)表格式、菜單格式、輸入輸出時(shí)間等。)

(2)硬件接口

(3)軟件接口

(4)故障處理

7.其他要求

如可使用性、安全保密、可維護(hù)性、可移植性等

8.附錄

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

溫馨提示

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

評(píng)論

0/150

提交評(píng)論