版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第3章軟件需求分析與建模3.1需求分析3.2數(shù)據(jù)建模3.3功能建模3.4行為建模3.5數(shù)據(jù)字典3.6結(jié)構(gòu)化需求分析的若干技術(shù)3.7驗(yàn)證軟件需求3.8小結(jié)第3章軟件需求分析與建模3.1需求分析13.1需求分析3.1.1需求分析的任務(wù)需求分析的主要任務(wù)就是要通過軟件開發(fā)人員與用戶的交流和討論,準(zhǔn)確地獲取用戶對(duì)系統(tǒng)的具體要求。需求分析中任何的含混不清或微小的遺漏都可能會(huì)造成系統(tǒng)開發(fā)中的重大問題甚至導(dǎo)致失敗。在正確理解用戶需求的前提下,軟件開發(fā)人員還需要將這些需求準(zhǔn)確地以文檔的形式表達(dá)出來,作為設(shè)計(jì)階段的依據(jù)。需求分析階段結(jié)束時(shí)需要提交的主要文檔是軟件規(guī)格說明書。3.1需求分析3.1.1需求分析的任務(wù)2由于需求分析研究的對(duì)象是用戶對(duì)開發(fā)項(xiàng)目的要求,在實(shí)現(xiàn)這一階段任務(wù)時(shí)必須要注意兩個(gè)問題。問題之一在于:一個(gè)項(xiàng)目的參與者既包括軟件設(shè)計(jì)開發(fā)人員,又包括用戶,他們之間交流的難題會(huì)給軟件的開發(fā)留下隱患。用戶往往在軟件交付使用時(shí),才會(huì)發(fā)現(xiàn)系統(tǒng)存在的一系列問題。這就要求雙方必須在需求分析過程中加強(qiáng)溝通和協(xié)調(diào)。一方面,軟件設(shè)計(jì)人員應(yīng)盡量使用通俗的語言與用戶進(jìn)行交流;另一方面,用戶應(yīng)積極主動(dòng)地配合軟件設(shè)計(jì)人員的工作。問題之二在于:為了保證需求階段能夠提出完整、準(zhǔn)確的系統(tǒng)邏輯模型,開發(fā)人員必須花費(fèi)足夠的時(shí)間,全面了解用戶的需要,絕不能在需求模糊的情況下倉(cāng)促進(jìn)行軟件的設(shè)計(jì)和編程。根據(jù)國(guó)外的統(tǒng)計(jì)資料表明,在典型環(huán)境下開發(fā)軟件,需求分析階段的工作量大約要占到整個(gè)系統(tǒng)開發(fā)工作量的20%左右。由于需求分析研究的對(duì)象是用戶對(duì)開發(fā)項(xiàng)目的要求,在實(shí)現(xiàn)3用戶對(duì)系統(tǒng)的需求通??煞譃槿缦聝深悾?1)功能性需求:主要說明了待開發(fā)系統(tǒng)在功能上實(shí)際應(yīng)做到什么,是用戶最主要的需求。通常包括系統(tǒng)的輸入、系統(tǒng)能完成的功能、系統(tǒng)的輸出及其他反應(yīng)。(2)非功能性需求:從各個(gè)角度對(duì)所考慮的可能的解決方案的約束和限制。主要包括:過程需求(如交付需求、實(shí)現(xiàn)方法需求等)、產(chǎn)品需求(如可靠性需求、可移植性需求、安全保密性需求等)和外部需求(如法規(guī)需求、費(fèi)用需求等)等。用戶對(duì)系統(tǒng)的需求通??煞譃槿缦聝深悾?3.1.2需求分析的步驟需求分析階段的工作,大致可分為如下幾個(gè)步驟進(jìn)行:(1)通過調(diào)查研究,獲取用戶的需求。軟件開發(fā)人員只有通過認(rèn)真細(xì)致的調(diào)查研究,才能獲得進(jìn)行系統(tǒng)分析的原始資料。需求信息的獲取可來源于閱讀描述系統(tǒng)需求的用戶文檔;對(duì)相關(guān)軟件、技術(shù)的市場(chǎng)調(diào)查;對(duì)管理部門、用戶的訪問咨詢;對(duì)工作現(xiàn)場(chǎng)的實(shí)際考察等。3.1.2需求分析的步驟5(2)去除非本質(zhì)因素,確定系統(tǒng)的真正需求。對(duì)于獲取的原始需求,軟件開發(fā)人員需要根據(jù)掌握的專業(yè)知識(shí),運(yùn)用抽象的邏輯思維,找出需求間的內(nèi)在聯(lián)系和矛盾,去除需求中不合理和非本質(zhì)的部分,確定軟件系統(tǒng)的真正需求。(3)描述需求,建立系統(tǒng)的邏輯模型。對(duì)于確定的系統(tǒng)需求,軟件開發(fā)人員要通過現(xiàn)有的需求分析方法及工具對(duì)其進(jìn)行清晰、準(zhǔn)確的描述,建立無二義性的、完整的系統(tǒng)邏輯模型。(2)去除非本質(zhì)因素,確定系統(tǒng)的真正需求。6(4)書寫需求說明書,進(jìn)行需求復(fù)審。需求階段應(yīng)提交的主要文檔包括需求規(guī)格說明書、初步的用戶手冊(cè)和修正后的開發(fā)計(jì)劃。其中,需求規(guī)格說明書是對(duì)分析階段主要成果的綜合描述,是該階段最重要的技術(shù)文檔。為了保證軟件開發(fā)的質(zhì)量,對(duì)需求分析階段的工作要按照嚴(yán)格的規(guī)范進(jìn)行復(fù)審,從不同的技術(shù)角度對(duì)該階段工作做出綜合性的評(píng)價(jià)。復(fù)審即要有用戶參加,也要有管理部門和軟件開發(fā)人員參加。(4)書寫需求說明書,進(jìn)行需求復(fù)審。73.1.3需求分析的原則目前存在著許多需求分析的方法,雖然各種方法都有其獨(dú)特的描述方法,但不論采用何種方法,需求分析都必須遵循以下基本原則:(1)能夠表達(dá)和理解問題的數(shù)據(jù)域和功能域。所有軟件開發(fā)的最終目的都是為了解決數(shù)據(jù)處理的問題,數(shù)據(jù)處理的本質(zhì)就是將一種形式的數(shù)據(jù)轉(zhuǎn)換成另一種形式的數(shù)據(jù),即通過進(jìn)行一系列加工將輸入的原始數(shù)據(jù)轉(zhuǎn)換為所需的結(jié)果數(shù)據(jù)。需求分析階段必須明確系統(tǒng)中應(yīng)具備的每一個(gè)加工、加工的處理對(duì)象和由加工所引起的數(shù)據(jù)形式的變化。3.1.3需求分析的原則8(2)能夠?qū)?fù)雜問題分解化簡(jiǎn)。為了便于問題的解決和實(shí)現(xiàn),在需求分析過程中需要對(duì)于原本復(fù)雜的問題按照某種合適的方式進(jìn)行分解(對(duì)功能域和數(shù)據(jù)域均可)。分解可以是同一層次上的橫向分解,也可以是多層上的縱向分解。每一步分解都是在原有基礎(chǔ)上對(duì)系統(tǒng)的細(xì)化,使系統(tǒng)的理解和實(shí)現(xiàn)變得較為容易。(2)能夠?qū)?fù)雜問題分解化簡(jiǎn)。為了便于問題的解決和9(3)能夠給出系統(tǒng)的邏輯表示和物理表示。系統(tǒng)需求的邏輯表示用于指明系統(tǒng)所要達(dá)到的功能要求和需要處理的數(shù)據(jù),不涉及實(shí)現(xiàn)的細(xì)節(jié)。系統(tǒng)需求的物理表示用于指明處理功能和數(shù)據(jù)結(jié)構(gòu)的實(shí)際表現(xiàn)形式,通常由系統(tǒng)中的設(shè)備決定。如處理數(shù)據(jù)的來源,某些軟件可能由終端輸入,另一些軟件可能由特定設(shè)備提供。給出系統(tǒng)的邏輯表示和物理表示對(duì)滿足系統(tǒng)處理需求所提出的邏輯限制條件和系統(tǒng)中其他成分提出的物理限制是必不可少的。(3)能夠給出系統(tǒng)的邏輯表示和物理表示。系統(tǒng)需求的103.2數(shù)據(jù)建模3.2.1實(shí)體模型1.實(shí)體模型的概念對(duì)于一個(gè)軟件系統(tǒng)來說,所涉及的數(shù)據(jù)成千上萬,如何對(duì)這些復(fù)雜數(shù)據(jù)及其之間的關(guān)系進(jìn)行分析并將它們以最優(yōu)的方式組織起來,對(duì)軟件開發(fā)的成敗起著非常重要的作用。3.2數(shù)據(jù)建模3.2.1實(shí)體模型11E-R(Entity-Relation)方法,即實(shí)體—聯(lián)系方法是目前最常用的數(shù)據(jù)建模方法,可以用于在需求分析階段清晰地表達(dá)目標(biāo)系統(tǒng)中數(shù)據(jù)之間的聯(lián)系及其組織方式,建立系統(tǒng)的實(shí)體數(shù)據(jù)模型(E-R模型)。實(shí)體模型是一種面向問題的概念數(shù)據(jù)模型,是按照用戶的觀點(diǎn)對(duì)系統(tǒng)的數(shù)據(jù)和信息進(jìn)行建模的,因此它與軟件系統(tǒng)中的實(shí)現(xiàn)方法,如數(shù)據(jù)結(jié)構(gòu)、存取路徑、存取效率等無關(guān)。實(shí)體模型可以根據(jù)需要在軟件實(shí)現(xiàn)時(shí)轉(zhuǎn)換成各種不同數(shù)據(jù)庫(kù)管理系統(tǒng)所支持的數(shù)據(jù)物理模型。實(shí)體模型由實(shí)體、聯(lián)系和屬性三個(gè)基本成分組成。E-R(Entity-Relation)方法,即實(shí)體12(1)實(shí)體:指客觀世界存在的且可以相互區(qū)分的事物。實(shí)體可以是人,也可以是物,還可以是抽象概念。如職工、計(jì)算機(jī)、產(chǎn)品都是實(shí)體。(2)屬性:有時(shí)也稱性質(zhì),是指實(shí)體某一方面的特征。一個(gè)實(shí)體通常由多個(gè)屬性值組成。如學(xué)生實(shí)體具有學(xué)號(hào)、姓名、專業(yè)、年級(jí)等屬性。(3)聯(lián)系:指實(shí)體之間的相互關(guān)系。實(shí)體之間的聯(lián)系可主要?jiǎng)澐譃槿悾阂粚?duì)一(1:1)、一對(duì)多(1:n)和多對(duì)多(m:n)。聯(lián)系也可以具有屬性。為了便于實(shí)現(xiàn),在進(jìn)行數(shù)據(jù)庫(kù)設(shè)計(jì)時(shí)通常將多對(duì)多的聯(lián)系轉(zhuǎn)換為一對(duì)多的聯(lián)系,如圖4.1所示。(1)實(shí)體:指客觀世界存在的且可以相互區(qū)分的事物。13圖3.1學(xué)生和課程之間的E-R模型學(xué)生和課程之間的多對(duì)多聯(lián)系E-R模型;(b)將多對(duì)多聯(lián)系轉(zhuǎn)換為一對(duì)多聯(lián)系E-R模型圖3.1學(xué)生和課程之間的E-R模型142.實(shí)體-模型中的基本符號(hào)表3.1E-R模型中的基本符號(hào)符號(hào)含義表示實(shí)體表示實(shí)體間的聯(lián)系,與實(shí)體間的連線上需用數(shù)字標(biāo)明具體的對(duì)應(yīng)關(guān)系表示與實(shí)體有關(guān)的屬性用于實(shí)體、屬性及聯(lián)系的連接2.實(shí)體-模型中的基本符號(hào)表3.1E-R模型中的基本符15
3.實(shí)體-模型的建立要建立系統(tǒng)的實(shí)體模型,通常可按如下步驟進(jìn)行:(1)對(duì)系統(tǒng)的數(shù)據(jù)域和功能域進(jìn)行分析,確定系統(tǒng)中所涉及的實(shí)體。例如,在圖3.2所示的工資計(jì)算系統(tǒng)中,單位對(duì)職工的工作情況進(jìn)行考勤,根據(jù)出勤結(jié)果、基本工資檔案、獎(jiǎng)金及扣款計(jì)算職工的實(shí)發(fā)工資。因此,工資系統(tǒng)中所涉及的實(shí)體就包括職工、出勤、獎(jiǎng)勵(lì)和扣款。3.實(shí)體-模型的建立16圖3.2工資計(jì)算系統(tǒng)的E-R模型圖3.2工資計(jì)算系統(tǒng)的E-R模型17(2)確定系統(tǒng)中各實(shí)體之間的聯(lián)系。如工資計(jì)算系統(tǒng)中,一名職工一個(gè)月只有一條出勤記錄,因此職工和出勤兩個(gè)實(shí)體之間是一對(duì)一的聯(lián)系;一名職工在一個(gè)月中對(duì)應(yīng)著多項(xiàng)扣款,如水電費(fèi)、缺勤扣款、個(gè)人所得稅等,因此職工和扣款之間是一對(duì)多的聯(lián)系;同理,一名職工在一個(gè)月中可以獲得多項(xiàng)獎(jiǎng)勵(lì),因此職工和獎(jiǎng)金之間也是一對(duì)多的聯(lián)系。(2)確定系統(tǒng)中各實(shí)體之間的聯(lián)系。如工資計(jì)算系統(tǒng)中18(3)確定各實(shí)體及聯(lián)系的屬性。例如,工資計(jì)算系統(tǒng)的職工實(shí)體具有職工號(hào)、性別、職稱、年齡、部門、基本工資等屬性。目前,最常用的數(shù)據(jù)庫(kù)模型是關(guān)系模型,它是通過一張二維表來表示和處理實(shí)體集合和屬性關(guān)系的數(shù)據(jù)庫(kù)系統(tǒng)方法。在關(guān)系數(shù)據(jù)庫(kù)中,為了避免出現(xiàn)數(shù)據(jù)冗余、二義性的問題,方便數(shù)據(jù)庫(kù)的各種操作,二維表必須滿足以下的規(guī)范化約束條件:(3)確定各實(shí)體及聯(lián)系的屬性。例如,工資計(jì)算系統(tǒng)的19(1)表格中的每個(gè)信息項(xiàng)必須是一個(gè)不可分割的數(shù)據(jù)項(xiàng)。(2)表格每一列中所有信息項(xiàng)必須是同類型的數(shù)據(jù),各列在表中的次序任意,每列對(duì)應(yīng)一個(gè)惟一的名字。(3)表格中每一行的數(shù)據(jù)各不相同,各行在表中的次序任意。(1)表格中的每個(gè)信息項(xiàng)必須是一個(gè)不可分割的數(shù)據(jù)項(xiàng)203.2.2數(shù)據(jù)建模的其他圖形工具1.層次方框圖層次方框圖通過樹型結(jié)構(gòu)的一系列多層次的矩形框描述復(fù)雜數(shù)據(jù)的層次結(jié)構(gòu)。樹型結(jié)構(gòu)頂端的矩形框只有一個(gè),用于代表完整的數(shù)據(jù)結(jié)構(gòu)。下面各層的矩形框是對(duì)完整數(shù)據(jù)結(jié)構(gòu)的逐步分解和細(xì)化得到的數(shù)據(jù)子集;底層的矩形框代表組成該數(shù)據(jù)結(jié)構(gòu)的基本元素,是數(shù)據(jù)的最小單位,不可再分割。層次方框圖非常適合描述自頂向下的需求分析方法中數(shù)據(jù)的層次關(guān)系。系統(tǒng)分析員可以從對(duì)頂層信息的分類開始,沿著層次圖中的每條路徑逐步細(xì)化,直到確定了數(shù)據(jù)結(jié)構(gòu)的全部細(xì)節(jié)為止。例如,某單位職工的實(shí)發(fā)工資由應(yīng)發(fā)工資和扣款兩部分組成,每部分又可進(jìn)一步細(xì)分。如應(yīng)發(fā)工資又可分為基本工資和獎(jiǎng)金;基本工資又可分為國(guó)家工資、津貼、補(bǔ)貼;獎(jiǎng)金也可分為出勤獎(jiǎng)和業(yè)績(jī)獎(jiǎng);津貼和補(bǔ)貼還可以再進(jìn)一步地細(xì)分。實(shí)發(fā)工資的層次方框圖如圖3.3所示。3.2.2數(shù)據(jù)建模的其他圖形工具21圖3.3某單位職工實(shí)發(fā)工資的層次方框圖圖3.3某單位職工實(shí)發(fā)工資的層次方框圖22
2.Warnier圖Warnier圖是法國(guó)科學(xué)家Warnier提出的另一種描述數(shù)據(jù)層次結(jié)構(gòu)的圖形工具。與層次方框圖類似,Warnier圖也采用了樹型結(jié)構(gòu)表示數(shù)據(jù),但與層次方框圖相比,Warnier圖對(duì)數(shù)據(jù)的描繪手段更加豐富。利用Warnier圖可以清楚地表明數(shù)據(jù)的邏輯結(jié)構(gòu)中某類信息的重復(fù)出現(xiàn)及某些特定信息出現(xiàn)的條件約束,因此,Warnier圖可以較為容易地轉(zhuǎn)變成軟件設(shè)計(jì)的工具。2.Warnier圖23在Warnier圖中,使用大括號(hào)來區(qū)分?jǐn)?shù)據(jù)結(jié)構(gòu)的層次。一個(gè)大括號(hào)內(nèi)的所有名字都屬于同一類信息;異或符號(hào)“?”用于表明一類信息或一個(gè)數(shù)據(jù)元素在一定條件下出現(xiàn),而且在這個(gè)符號(hào)上、下方的兩個(gè)名字所代表的數(shù)據(jù)只能出現(xiàn)一個(gè)。在一個(gè)名字下面或右邊的圓括號(hào)中出現(xiàn)的數(shù)字指明了這個(gè)名字所代表的信息類或數(shù)據(jù)元素在該數(shù)據(jù)結(jié)構(gòu)中重復(fù)出現(xiàn)的次數(shù)。例如,某計(jì)算機(jī)公司的一種軟件產(chǎn)品要么是系統(tǒng)軟件,要么是應(yīng)用軟件;系統(tǒng)軟件中有k1種操作系統(tǒng)、k2種編譯程序,此外還有工具軟件;工具軟件進(jìn)一步又可劃分為編輯程序、測(cè)試工具和輔助設(shè)計(jì)工具,它們各自的數(shù)量分別為j1、j2和j3。描繪這種軟件產(chǎn)品的Warnier圖如圖3.4所示。在Warnier圖中,使用大括號(hào)來區(qū)分?jǐn)?shù)據(jù)結(jié)構(gòu)的層次24圖3.4描繪一種軟件產(chǎn)品的Warnier圖圖3.4描繪一種軟件產(chǎn)品的Warnier圖253.3功能建模在需求分析階段,數(shù)據(jù)流(也稱信息流)是系統(tǒng)分析的基礎(chǔ)。所謂數(shù)據(jù)流,形象地說就是系統(tǒng)中“流動(dòng)的數(shù)據(jù)結(jié)構(gòu)”。數(shù)據(jù)流圖(DFD,DataFlowDiagram)是描述軟件系統(tǒng)中數(shù)據(jù)處理過程的一種有力的圖形工具。數(shù)據(jù)流圖從數(shù)據(jù)傳遞和加工的角度出發(fā),刻畫數(shù)據(jù)流從輸入到輸出的移動(dòng)和變換過程。由于它能夠清晰地反映系統(tǒng)必須完成的邏輯功能,所以它已經(jīng)成為需求分析階段中功能建模最常用的工具。3.3功能建模在需求分析階段,數(shù)據(jù)流(也稱263.3.1數(shù)據(jù)流圖的基本符號(hào)表3.2數(shù)據(jù)流圖中的基本符號(hào)或或或符號(hào)含義數(shù)據(jù)的源點(diǎn)或終點(diǎn)數(shù)據(jù)流數(shù)據(jù)存儲(chǔ)加工3.3.1數(shù)據(jù)流圖的基本符號(hào)表3.2數(shù)據(jù)流圖中的基本27
1.數(shù)據(jù)的源點(diǎn)或終點(diǎn)數(shù)據(jù)的源點(diǎn)或終點(diǎn)用于反映數(shù)據(jù)流圖與外部實(shí)體之間的聯(lián)系,表示圖中的輸入數(shù)據(jù)來自哪里或處理結(jié)果送向何處。如圖3.5中的人事部門、后勤部門是工資系統(tǒng)中數(shù)據(jù)的源點(diǎn),而職工和銀行則是工資系統(tǒng)中數(shù)據(jù)的終點(diǎn)。1.數(shù)據(jù)的源點(diǎn)或終點(diǎn)28
2.數(shù)據(jù)流數(shù)據(jù)流是數(shù)據(jù)在系統(tǒng)中(包括數(shù)據(jù)處理之間、數(shù)據(jù)處理和數(shù)據(jù)存儲(chǔ)之間以及數(shù)據(jù)處理和數(shù)據(jù)的源點(diǎn)或終點(diǎn)之間)的傳送通道,數(shù)據(jù)流符號(hào)的箭頭指明了數(shù)據(jù)的流動(dòng)方向。如圖3.5中的出勤表、業(yè)績(jī)表、水電扣款表、工資條及工資存款清單等均為數(shù)據(jù)流。在數(shù)據(jù)流圖中,除了連接加工和數(shù)據(jù)存儲(chǔ)的數(shù)據(jù)流以外,其他的數(shù)據(jù)流在圖中都對(duì)應(yīng)一個(gè)惟一的名字。2.數(shù)據(jù)流29圖3.5工資計(jì)算系統(tǒng)的頂層(0層)數(shù)據(jù)流圖圖3.5工資計(jì)算系統(tǒng)的頂層(0層)數(shù)據(jù)流圖30
3.加工加工也稱為數(shù)據(jù)處理,是對(duì)系統(tǒng)中的數(shù)據(jù)流進(jìn)行的某些操作或變換。圖中每個(gè)加工都要有對(duì)應(yīng)的名稱,最常見的名稱是由一個(gè)表明具體動(dòng)作的動(dòng)詞和一個(gè)表明處理對(duì)象的名詞構(gòu)成的,如計(jì)算應(yīng)發(fā)工資、打印工資清單等。
4.數(shù)據(jù)存儲(chǔ)在數(shù)據(jù)流圖中用于保存數(shù)據(jù)的數(shù)據(jù)文件被稱為數(shù)據(jù)存儲(chǔ),它可以是數(shù)據(jù)庫(kù)文件或任何其他形式的數(shù)據(jù)組織。流向數(shù)據(jù)存儲(chǔ)的數(shù)據(jù)流可理解為向文件寫入數(shù)據(jù)或?qū)ξ募M(jìn)行查詢,流出數(shù)據(jù)存儲(chǔ)的數(shù)據(jù)流可理解為從文件中讀取數(shù)據(jù)或得到查詢結(jié)果。3.加工313.3.2數(shù)據(jù)流與加工之間的關(guān)系在數(shù)據(jù)流圖中,可以有兩個(gè)以上的數(shù)據(jù)流進(jìn)入同一個(gè)加工,也可以有兩個(gè)以上的數(shù)據(jù)流從同一個(gè)加工中流出,這樣的多個(gè)數(shù)據(jù)流之間往往存在一定的關(guān)系。為了表示這些數(shù)據(jù)流之間的關(guān)系,需要在數(shù)據(jù)流圖中給這些數(shù)據(jù)流對(duì)應(yīng)的加工加上一定的標(biāo)記符號(hào)。在表3.3中列出了加工中常見的幾種關(guān)系的表示方法。(表中以從加工流入或流出兩個(gè)數(shù)據(jù)流為例)。3.3.2數(shù)據(jù)流與加工之間的關(guān)系32表3.3加工中常見關(guān)系的符號(hào)表示符號(hào)含義由數(shù)據(jù)A和B共同變換為數(shù)據(jù)C由數(shù)據(jù)A變換為數(shù)據(jù)B和數(shù)據(jù)C由數(shù)據(jù)A或B,或者數(shù)據(jù)A和B共同變換為數(shù)據(jù)C由數(shù)據(jù)A變換為數(shù)據(jù)B或C,或者同時(shí)變換為數(shù)據(jù)B和C由數(shù)據(jù)A或B其中之一變換為數(shù)據(jù)C由數(shù)據(jù)A變換為數(shù)據(jù)B或C其中之一表3.3加工中常見關(guān)系的符號(hào)表示符號(hào)含333.3.3數(shù)據(jù)流模型的建立方法
對(duì)于一個(gè)復(fù)雜的系統(tǒng)來說,可能存在著幾十個(gè)甚至成百上千個(gè)加工,若要在一個(gè)數(shù)據(jù)流圖中清楚地描述出整個(gè)系統(tǒng)加工的過程是很困難的,而采用對(duì)數(shù)據(jù)流圖進(jìn)行分層的方法則可以很好地解決這個(gè)問題。按照結(jié)構(gòu)化分析方法中“自頂向下,逐步分解”的思想,可以先將整個(gè)系統(tǒng)看作是一個(gè)加工,它的輸入數(shù)據(jù)和輸出數(shù)據(jù)表明了系統(tǒng)和外部環(huán)境的接口,從而首先畫出系統(tǒng)的頂層數(shù)據(jù)流圖。為了能夠清楚地表明系統(tǒng)加工的詳細(xì)過程,接著從頂層數(shù)據(jù)流圖出發(fā),逐層地對(duì)系統(tǒng)進(jìn)行分解。每分解一次,系統(tǒng)中加工的數(shù)量就隨之增加,每個(gè)加工的功能描述也越來越具體。重復(fù)這種分解,直至得到系統(tǒng)的底層數(shù)據(jù)流圖。底層數(shù)據(jù)流圖中的所有加工都應(yīng)是不可再分解的、最簡(jiǎn)單的“原子加工”。通過分解過程中得到的這一組分層數(shù)據(jù)流圖(由頂層、中間層和底層數(shù)據(jù)流圖共同構(gòu)成)就可以十分清晰地描述出整個(gè)系統(tǒng)所有加工的詳細(xì)情況。3.3.3數(shù)據(jù)流模型的建立方法34下面以某單位工資管理系統(tǒng)為例,來介紹一下分層數(shù)據(jù)流模型的建立方法。1.建立頂層數(shù)據(jù)流圖任何系統(tǒng)的頂層數(shù)據(jù)流圖都只有一個(gè),用于反映目標(biāo)系統(tǒng)所要實(shí)現(xiàn)的功能及與外部環(huán)境的接口。頂層數(shù)據(jù)流圖中只有一個(gè)代表整個(gè)系統(tǒng)的加工,數(shù)據(jù)的源點(diǎn)和終點(diǎn)對(duì)應(yīng)著系統(tǒng)的外部實(shí)體,表明了系統(tǒng)輸入數(shù)據(jù)的來源和輸出數(shù)據(jù)的去向。工資管理系統(tǒng)的頂層數(shù)據(jù)流圖如圖3.5所示。下面以某單位工資管理系統(tǒng)為例,來介紹一下分層數(shù)據(jù)流模35
2.數(shù)據(jù)流圖的分層細(xì)化首先按照系統(tǒng)的功能,對(duì)頂層數(shù)據(jù)流圖進(jìn)行分解,生成第一層數(shù)據(jù)流圖。如例子中的工資計(jì)算系統(tǒng)可劃分為計(jì)算工資、打印工資清單和工資轉(zhuǎn)存三個(gè)加工。其中,計(jì)算工資完成單位職工工資計(jì)算,生成工資清單的功能;打印工資清單完成工資條的打印功能;工資轉(zhuǎn)存完成生成職工工資存款清單并將其發(fā)送到銀行的功能。對(duì)劃分得到的加工應(yīng)進(jìn)行編號(hào),如圖3.6中工資計(jì)算的編號(hào)為1,打印工資清單的編號(hào)為2,工資轉(zhuǎn)存的編號(hào)為3。加工之間的數(shù)據(jù)流也應(yīng)在數(shù)據(jù)流圖中標(biāo)明,如圖3.6中計(jì)算工資將單位職工的實(shí)發(fā)工資表傳送給工資轉(zhuǎn)存。此外,在標(biāo)出數(shù)據(jù)流和劃分加工的同時(shí),還要在圖中畫出涉及的數(shù)據(jù)存儲(chǔ)。2.數(shù)據(jù)流圖的分層細(xì)化36圖3.6工資計(jì)算系統(tǒng)第一層數(shù)據(jù)流圖圖3.6工資計(jì)算系統(tǒng)第一層數(shù)據(jù)流圖37對(duì)第一層數(shù)據(jù)流圖中的加工繼續(xù)分解,則可得到第二層數(shù)據(jù)流圖,如圖3.7所示。對(duì)分解得到的加工進(jìn)行編號(hào),以反映出它與上層數(shù)據(jù)流圖之間的關(guān)系,如對(duì)第一層數(shù)據(jù)流圖中的計(jì)算工資分解得到的數(shù)據(jù)流圖中的加工的編號(hào)分別為1.1~1.4。若數(shù)據(jù)流圖中的加工還可繼續(xù)細(xì)化,則重復(fù)以上分解過程,直到獲得系統(tǒng)的底層數(shù)據(jù)流圖。工資計(jì)算系統(tǒng)的第三層數(shù)據(jù)流圖如圖3.8所示。對(duì)第一層數(shù)據(jù)流圖中的加工繼續(xù)分解,則可得到第二層數(shù)據(jù)38圖3.7工資計(jì)算系統(tǒng)的第二層數(shù)據(jù)流圖(a)“計(jì)算工資”子數(shù)據(jù)流圖;(b)“工資轉(zhuǎn)存”子數(shù)據(jù)流圖圖3.7工資計(jì)算系統(tǒng)的第二層數(shù)據(jù)流圖39圖3.8工資計(jì)算系統(tǒng)的第三層數(shù)據(jù)流圖圖3.8工資計(jì)算系統(tǒng)的第三層數(shù)據(jù)流圖403.3.4建立數(shù)據(jù)流模型的原則建立數(shù)據(jù)流模型要遵循以下的原則:(1)每個(gè)加工至少應(yīng)有一個(gè)輸入數(shù)據(jù)流(反映被處理數(shù)據(jù)的來源)和一個(gè)輸出數(shù)據(jù)流(反映加工的結(jié)果)。(2)數(shù)據(jù)流圖中各構(gòu)成元素的名稱必須具有明確的含義且能夠代表對(duì)應(yīng)元素的內(nèi)容或功能。(3)對(duì)數(shù)據(jù)流圖中某個(gè)加工進(jìn)行細(xì)化生成的下層數(shù)據(jù)流圖,稱為其上層圖的子圖。應(yīng)保證分層數(shù)據(jù)流圖中任意對(duì)應(yīng)的父圖和子圖的輸入/輸出數(shù)據(jù)保持一致。
3.3.4建立數(shù)據(jù)流模型的原則41(4)在數(shù)據(jù)流圖中,應(yīng)按照層次給每個(gè)加工編號(hào),用于表明該加工所處的層次及上、下層的父圖與子圖的關(guān)系。編號(hào)的規(guī)則為:頂層加工不用編號(hào);第二層加工的編號(hào)為1,2,…,n;第三層加工的編號(hào)為1.1,1.2,…,2.1,…,n.1,n.2,…等,依次類推。如編號(hào)1.2表明該加工處于第三層數(shù)據(jù)流圖中,序號(hào)為2,該圖是對(duì)上層數(shù)據(jù)流圖中編號(hào)為1的加工進(jìn)行細(xì)化得到的子圖。(5)在父圖中不要出現(xiàn)子圖中涉及的局部數(shù)據(jù)存儲(chǔ)文件。通常除底層數(shù)據(jù)流圖中需標(biāo)明所有數(shù)據(jù)存儲(chǔ)外,為了保持畫面的整潔,各中間層數(shù)據(jù)流圖只需顯示處于加工之間的接口文件即可。(4)在數(shù)據(jù)流圖中,應(yīng)按照層次給每個(gè)加工編號(hào),用于42(6)數(shù)據(jù)流圖只能由四種基本符號(hào)組成,是實(shí)際業(yè)務(wù)流程的客觀映象,用于說明系統(tǒng)應(yīng)該“做什么”,而不需要指明系統(tǒng)“如何做”。(7)數(shù)據(jù)流圖的分解速度應(yīng)保持適中。通常一個(gè)加工每次可分解為2~4個(gè)子加工,最多不要超過七個(gè),因?yàn)檫^快的分解會(huì)增加用戶對(duì)系統(tǒng)模型理解的難度。(8)為了便于數(shù)據(jù)流圖在計(jì)算機(jī)上的輸入和輸出,免去畫斜線、弧線、圓等符號(hào)的麻煩,數(shù)據(jù)流圖還有另一套表示符號(hào),如表4.4所示。
(6)數(shù)據(jù)流圖只能由四種基本符號(hào)組成,是實(shí)際業(yè)務(wù)流程43表3.4數(shù)據(jù)流圖的另一套表示符號(hào)編號(hào)編號(hào)符號(hào)含義數(shù)據(jù)流,只能為水平或垂直的帶箭頭直線
加工數(shù)據(jù)存儲(chǔ)數(shù)據(jù)的源點(diǎn)或終點(diǎn)表3.4數(shù)據(jù)流圖的另一套表示符號(hào)編號(hào)編號(hào)符號(hào)含443.4行為建模3.4.1狀態(tài)遷移圖狀態(tài)遷移圖是一種描述系統(tǒng)狀態(tài)隨外部信號(hào)或事件進(jìn)行遷移的有效的圖形手段。在狀態(tài)遷移圖中,用圓圈表示可得到的系統(tǒng)狀態(tài),在圓圈中需要標(biāo)明狀態(tài)的名字。此外,用帶箭頭的線表示從一種系統(tǒng)狀態(tài)向另一種系統(tǒng)狀態(tài)的遷移,在線上要寫明導(dǎo)致狀態(tài)遷移的信號(hào)或事件的名字。例如,在操作系統(tǒng)中,當(dāng)存在多個(gè)申請(qǐng)占用CPU運(yùn)行的進(jìn)程(進(jìn)程是分配CPU的最小處理單位)時(shí),系統(tǒng)將按照某種調(diào)度策略為各個(gè)進(jìn)程分配CPU。此時(shí),進(jìn)程的狀態(tài)可能有三種:就緒、運(yùn)行和等待。3.4行為建模3.4.1狀態(tài)遷移圖45●就緒:等待分配CPU;●運(yùn)行:占用CPU進(jìn)行相應(yīng)的處理;●掛起:放棄CPU的使用。導(dǎo)致系統(tǒng)狀態(tài)發(fā)生遷移的事件有四種:t1、t2、t3、t4,分述如下:●t1:因I/O等事件的發(fā)生而要求中斷;●t2:中斷事件已經(jīng)處理完畢;●t3:分配CPU;●t4:已用完分配的CPU時(shí)間。●就緒:等待分配CPU;46在上面描述的情況下,有關(guān)CPU分配的進(jìn)程的狀態(tài)遷移圖如圖3.9所示。狀態(tài)遷移圖還可以表示為等價(jià)的表格形式,這樣的表格稱為狀態(tài)遷移表。狀態(tài)遷移表的列由所有的系統(tǒng)狀態(tài)組成,行由引起狀態(tài)遷移的所有信號(hào)或事件組成,表格中第i行第j列的元素是從狀態(tài)Sj因發(fā)生事件ti而會(huì)遷移到的狀態(tài)。與圖3.9等價(jià)的狀態(tài)遷移表如表3.5所示。在表中,S1代表就緒狀態(tài);S2代表運(yùn)行狀態(tài);S3代表掛起狀態(tài)。在上面描述的情況下,有關(guān)CPU分配的進(jìn)程的狀態(tài)遷移圖47圖3.9進(jìn)程的狀態(tài)遷移圖圖3.9進(jìn)程的狀態(tài)遷移圖48表3.5進(jìn)程的狀態(tài)遷移表?狀態(tài)事件S1S2S3t1
S3
t2
S1t3S2
t4
S1
表3.5進(jìn)程的狀態(tài)遷移表?狀態(tài)事件S1S2S349如果狀態(tài)遷移圖所描述的系統(tǒng)比較復(fù)雜,則可以采用狀態(tài)圖的分層表示法。即先確定系統(tǒng)的大狀態(tài),畫出相應(yīng)的狀態(tài)圖,再對(duì)狀態(tài)圖中的大狀態(tài)進(jìn)一步進(jìn)行細(xì)分,得到更為詳細(xì)的系統(tǒng)下層狀態(tài)遷移圖。例如對(duì)圖3.10(a)所示的狀態(tài)圖中的大狀態(tài)S1進(jìn)行細(xì)化,就得到了圖3.10(b)所示的下層狀態(tài)遷移圖。此外,在狀態(tài)遷移圖,一個(gè)狀態(tài)由于某個(gè)事件而導(dǎo)致的下一個(gè)狀態(tài)可能會(huì)有多個(gè),具體遷移的狀態(tài)是由更詳細(xì)的內(nèi)部狀態(tài)和更詳細(xì)的事件信息所決定的。為了能夠描述這種情況下系統(tǒng)狀態(tài)的變換過程,可在狀態(tài)遷移圖中引入判斷框和處理框,如圖3.10(c)中所示的狀態(tài)遷移圖就是采用這種方法對(duì)圖3.10(a)的變形。如果狀態(tài)遷移圖所描述的系統(tǒng)比較復(fù)雜,則可以采用狀態(tài)圖50圖3.10狀態(tài)遷移圖舉例(a)狀態(tài)遷移圖;(b)細(xì)化后的狀態(tài)遷移圖;(c)狀態(tài)遷移圖的變形圖3.10狀態(tài)遷移圖舉例513.4.2Petri網(wǎng)Petri網(wǎng)是德國(guó)人C.A.Petri于1962年提出的,它是一種使用圖形方式對(duì)系統(tǒng)進(jìn)行需求規(guī)格說明的技術(shù),不僅能夠描述同步模型,而且適用于描述相互獨(dú)立、協(xié)同工作的處理系統(tǒng),即并發(fā)系統(tǒng)。目前,Petri網(wǎng)在硬件、軟件等領(lǐng)域都得到了廣泛的應(yīng)用,已經(jīng)大量地應(yīng)用于各種系統(tǒng)的模型化。在形式上,Petri網(wǎng)通常被描述為一張有向圖。Petri網(wǎng)的圖簡(jiǎn)稱為PNG(PetriNetGraph)。在PNG中,組成的基本符號(hào)有三類,符號(hào)及其對(duì)應(yīng)的含義如表3.6所示。3.4.2Petri網(wǎng)52表3.6Petri網(wǎng)中的基本符號(hào)及含義符號(hào)含義位置(place),用于表示系統(tǒng)中的狀態(tài)變遷(transition),用于表示系統(tǒng)中的事件由狀態(tài)指向事件的有向邊,用于表示事件發(fā)生的前提,即對(duì)事件的輸入由事件指向狀態(tài)的有向邊,用于表示事件導(dǎo)致的結(jié)果,即事件的輸出表3.6Petri網(wǎng)中的基本符號(hào)及含義符號(hào)含53圖3.11是描述一個(gè)處于靜止?fàn)顟B(tài)的系統(tǒng)的Petri網(wǎng),圖中只給出了系統(tǒng)中各個(gè)狀態(tài)通過變遷而表現(xiàn)出來的相互關(guān)系。為了采用Petri網(wǎng)描述系統(tǒng)的動(dòng)態(tài)行為,需要在Petri網(wǎng)中引入令牌(token)的概念。若Petri網(wǎng)中某個(gè)狀態(tài)擁有令牌(在圖中,擁有令牌的狀態(tài)對(duì)應(yīng)的圓圈中間標(biāo)記有實(shí)心黑點(diǎn)),則表明該狀態(tài)處理要求的到來。如果一個(gè)事件(變遷)發(fā)生的所有前提都滿足,即作為輸入的所有位置都擁有令牌,則稱該事件是使能(enable)的,這時(shí)此事件就可以被激發(fā)(fire)。事件激發(fā)后,令牌將由事件的輸入狀態(tài)移至事件的輸出狀態(tài)。采用Petri網(wǎng)描述系統(tǒng)動(dòng)態(tài)行為的狀態(tài)變遷圖如圖4.12所示。圖3.11是描述一個(gè)處于靜止?fàn)顟B(tài)的系統(tǒng)的Petri網(wǎng)54將Petri網(wǎng)用于需求分析階段的系統(tǒng)行為建模,可以使系統(tǒng)中時(shí)間之間的因果相關(guān)性及不相關(guān)性得到清楚的描述。雖然Petri網(wǎng)和狀態(tài)遷移圖同樣都是通過一些定義好的狀態(tài)來描述系統(tǒng)的行為,但Petri網(wǎng)更適用于并發(fā)系統(tǒng)的描述。將Petri網(wǎng)用于需求分析階段的系統(tǒng)行為建模,可以使55圖3.11描述靜態(tài)系統(tǒng)的Petri網(wǎng)圖3.11描述靜態(tài)系統(tǒng)的Petri網(wǎng)56圖3.12采用Petri網(wǎng)描述系統(tǒng)動(dòng)態(tài)行為的狀態(tài)變遷圖初始狀態(tài);(b)激發(fā)t1之后;(c)激發(fā)t2之后;(d)同時(shí)激發(fā)t1和t2之后圖3.12采用Petri網(wǎng)描述系統(tǒng)動(dòng)態(tài)行為的狀態(tài)變遷圖573.5數(shù)據(jù)字典雖然數(shù)據(jù)流圖能夠形象、清晰地描述數(shù)據(jù)在系統(tǒng)中流動(dòng)、加工、存儲(chǔ)的情況,但數(shù)據(jù)流圖中的許多構(gòu)成元素,如數(shù)據(jù)流、數(shù)據(jù)存儲(chǔ)、加工,僅依靠名稱并不能反映其本質(zhì)含義,因此必須對(duì)這些構(gòu)成元素進(jìn)行嚴(yán)格的定義。作為對(duì)數(shù)據(jù)流圖的補(bǔ)充,數(shù)據(jù)字典(DD,DataDictionary)能夠準(zhǔn)確地定義數(shù)據(jù)流圖中各組成成分的具體含義,二者共同構(gòu)成了系統(tǒng)的邏輯模型。3.5數(shù)據(jù)字典雖然數(shù)據(jù)流圖能夠形象、清晰地583.5.1數(shù)據(jù)字典的基本符號(hào)表3.7數(shù)據(jù)字典中的基本符號(hào)及其含義符號(hào)含義說明=表示定義為用于對(duì)=左邊的條目進(jìn)行確切的定義+表示與關(guān)系X=a+b表示X由a和b共同構(gòu)成[?|?][?,?]表示或關(guān)系X=[a|b]與X=[a,b]等價(jià),表示X由a或b組成(?)表示可選項(xiàng)X=(a)表示a可以在X中出現(xiàn),也可以不出現(xiàn){}表示重復(fù)大括號(hào)中的內(nèi)容重復(fù)0到多次m{}n表示規(guī)定次數(shù)的重復(fù)重復(fù)的次數(shù)最少m次,最多n次“?”表示基本數(shù)據(jù)元素“”中的內(nèi)容是基本數(shù)據(jù)元素,不可再分..連接符month=1..12表示month可取1~12中的任意值*?*表示注釋兩個(gè)星號(hào)之間的內(nèi)容為注釋信息3.5.1數(shù)據(jù)字典的基本符號(hào)表3.7數(shù)據(jù)字典中的基本593.5.2數(shù)據(jù)字典中的條目及說明格式數(shù)據(jù)字典是關(guān)于數(shù)據(jù)流圖中各種成分詳細(xì)定義的信息集合,可將其按照說明對(duì)象的類型劃分為四類條目,分別為數(shù)據(jù)流條目、數(shù)據(jù)項(xiàng)條目、數(shù)據(jù)文件條目和數(shù)據(jù)加工條目。為了便于軟件開發(fā)人員方便地查找所需的條目,應(yīng)按照一定的順序?qū)?shù)據(jù)字典中的不同條目進(jìn)行排列。下面分別對(duì)各類條目的內(nèi)容及說明格式進(jìn)行介紹。3.5.2數(shù)據(jù)字典中的條目及說明格式601.數(shù)據(jù)流條目數(shù)據(jù)流在數(shù)據(jù)流圖中主要用于說明數(shù)據(jù)結(jié)構(gòu)在系統(tǒng)中的作用和流動(dòng)方向,因此數(shù)據(jù)流也被稱作“流動(dòng)的數(shù)據(jù)結(jié)構(gòu)”。數(shù)據(jù)字典中數(shù)據(jù)流條目應(yīng)包括以下幾項(xiàng)主要內(nèi)容:數(shù)據(jù)流名稱、數(shù)據(jù)流別名、說明、數(shù)據(jù)流來源、數(shù)據(jù)流流向、數(shù)據(jù)流組成和數(shù)據(jù)流量等。例如:工資系統(tǒng)中的出勤表數(shù)據(jù)流在數(shù)據(jù)字典中的條目描述為1.數(shù)據(jù)流條目61數(shù)據(jù)流名稱:出勤表數(shù)據(jù)流別名:無說明:由人事部門每月月底上報(bào)的職工考勤統(tǒng)計(jì)數(shù)字?jǐn)?shù)據(jù)流來源:人事部門數(shù)據(jù)流流向:加工1.2(計(jì)算應(yīng)發(fā)工資)數(shù)據(jù)流組成:出勤表=年份+月份+職工號(hào)+出勤時(shí)數(shù)+病假時(shí)數(shù)+事假時(shí)數(shù)+曠工時(shí)數(shù)數(shù)據(jù)流量:1份/月數(shù)據(jù)流名稱:出勤表62
2.數(shù)據(jù)項(xiàng)條目數(shù)據(jù)流圖中每個(gè)數(shù)據(jù)結(jié)構(gòu)都是由若干個(gè)數(shù)據(jù)項(xiàng)構(gòu)成的,數(shù)據(jù)項(xiàng)是加工中的最小單位,不可再分。數(shù)據(jù)字典的數(shù)據(jù)項(xiàng)條目中應(yīng)包含的主要內(nèi)容有:數(shù)據(jù)項(xiàng)名稱、數(shù)據(jù)項(xiàng)別名、說明、類型、長(zhǎng)度、取值范圍及含義等。例如:出勤表中的職工號(hào)數(shù)據(jù)項(xiàng)在數(shù)據(jù)字典中的條目描述為數(shù)據(jù)項(xiàng)名稱:職工號(hào)數(shù)據(jù)項(xiàng)別名:employee_no說明:本單位職工的惟一標(biāo)識(shí)類型:字符串長(zhǎng)度:6取值范圍及含義:1~2位(00..99)為部門編號(hào):3~6位(XX0001..XX9999)為人員編號(hào)2.數(shù)據(jù)項(xiàng)條目63
3.數(shù)據(jù)文件條目數(shù)據(jù)文件是數(shù)據(jù)流圖中數(shù)據(jù)結(jié)構(gòu)的載體。數(shù)據(jù)字典的數(shù)據(jù)文件條目中應(yīng)包含的主要內(nèi)容有:數(shù)據(jù)文件名稱、說明、數(shù)據(jù)文件組成、組織方式、存取方式、存取頻率等。例如:工資系統(tǒng)中的職工工資檔案文件在數(shù)據(jù)字典中的條目描述為數(shù)據(jù)文件名稱:工資檔案說明:?jiǎn)挝宦毠さ幕竟べY、各項(xiàng)津貼及補(bǔ)貼信息數(shù)據(jù)文件組成:職工號(hào)+國(guó)家工資+國(guó)家津貼+職務(wù)津貼+職齡津貼+交通補(bǔ)貼+部門補(bǔ)貼+其他補(bǔ)貼組織方式:按職工號(hào)從小到大排列存取方式:順序存取頻率:1次/月3.數(shù)據(jù)文件條目644.數(shù)據(jù)加工條目在數(shù)據(jù)流圖中只簡(jiǎn)單給出了每個(gè)加工的名稱,在數(shù)據(jù)字典中通過數(shù)據(jù)加工條目主要是要說明每個(gè)加工是用來“做什么”的。數(shù)據(jù)字典的數(shù)據(jù)文件條目中應(yīng)包含的主要內(nèi)容有:數(shù)據(jù)加工名稱、加工編號(hào)、說明、輸入數(shù)據(jù)流、輸出數(shù)據(jù)流、加工邏輯等。例如:工資系統(tǒng)中的計(jì)算應(yīng)發(fā)工資這個(gè)加工在數(shù)據(jù)字典中的條目描述為數(shù)據(jù)加工名稱:計(jì)算應(yīng)發(fā)工資加工編號(hào):1.24.數(shù)據(jù)加工條目65說明:根據(jù)職工的工資檔案及本月獎(jiǎng)金發(fā)放表數(shù)據(jù)計(jì)算每個(gè)職工的應(yīng)發(fā)工資輸入數(shù)據(jù)流:獎(jiǎng)金發(fā)放表及工資檔案輸出數(shù)據(jù)流:應(yīng)發(fā)工資表加工邏輯:DOWHILE工資檔案文件指針未指向文件尾從工資檔案中取出當(dāng)前職工工資的各項(xiàng)基本數(shù)據(jù)進(jìn)行累加在獎(jiǎng)金發(fā)放表中按職工號(hào)查找到該職工的獎(jiǎng)金數(shù)對(duì)獎(jiǎng)金數(shù)與工資基本數(shù)據(jù)的累加和進(jìn)行求和得到該職工的應(yīng)發(fā)工資數(shù)ENDDO說明:根據(jù)職工的工資檔案及本月獎(jiǎng)金發(fā)放表數(shù)據(jù)計(jì)算每個(gè)664.5.3加工邏輯的描述1.結(jié)構(gòu)化語言結(jié)構(gòu)化語言是一種介于自然語言和形式化語言之間的半形式化語言,例如,上面對(duì)計(jì)算應(yīng)發(fā)工資條目中加工邏輯的描述就是采用的結(jié)構(gòu)化語言。它是在自然語言的基礎(chǔ)上加入了一定的限制,通過使用有限的詞匯和有限的語句來較為嚴(yán)格地描述加工邏輯。描述時(shí)可以使用的詞匯包括:數(shù)據(jù)字典中定義的名字、基本控制結(jié)構(gòu)中的關(guān)鍵詞、自然語言中具有明確意義的動(dòng)詞和少量的自定義詞匯等。盡量不使用形容詞或副詞,可以使用一些簡(jiǎn)單的算術(shù)或邏輯運(yùn)算符。結(jié)構(gòu)化語言中的三種基本結(jié)構(gòu)的描述方法如下:4.5.3加工邏輯的描述67(1)順序結(jié)構(gòu):由自然語言中的簡(jiǎn)單祈使語句序列構(gòu)成。(2)選擇結(jié)構(gòu):通常采用IF…THEN…ELSE…ENDIF和CASE…OF…ENDCASE結(jié)構(gòu)。(3)循環(huán)結(jié)構(gòu):通常采用DOWHILE…ENDDO和REPEAT…UNTIL結(jié)構(gòu)。(1)順序結(jié)構(gòu):由自然語言中的簡(jiǎn)單祈使語句序列構(gòu)成68
2.判定表當(dāng)某一加工的實(shí)現(xiàn)需要同時(shí)依賴多個(gè)邏輯條件的取值時(shí),對(duì)加工邏輯的描述就會(huì)變得較為復(fù)雜,很難采用結(jié)構(gòu)化語言清楚地將其描述出來,而采用判定表則能夠完整且清晰地表達(dá)復(fù)雜的條件組合與由此產(chǎn)生的動(dòng)作之間的對(duì)應(yīng)關(guān)系。判定表通常由用雙線分隔開的四個(gè)部分構(gòu)成:左上部用于列出所有相關(guān)的條件;左下部用于列出所有可能產(chǎn)生的動(dòng)作;右上部用于列出所有可能的條件組合;右下部用于列出在各種組合條件下需要進(jìn)行的動(dòng)作。通常把表中任意一個(gè)條件組合的特定取值及其相應(yīng)要執(zhí)行的動(dòng)作稱為規(guī)則。判定表的一般格式如下所示。
2.判定表69下面以描述某單位工資檔案管理系統(tǒng)中“職務(wù)津貼計(jì)算”加工邏輯為例說明判定表的寫法。由于篇幅限制,在下面的例子中假定職工的職稱只分為助工、工程師和高工三種,對(duì)應(yīng)的判定表見表3.8。條件列表?xiàng)l件組合動(dòng)作列表對(duì)應(yīng)的動(dòng)作下面以描述某單位工資檔案管理系統(tǒng)中“職務(wù)津貼計(jì)算”加70表3.8“職務(wù)津貼計(jì)算”判定表表3.8“職務(wù)津貼計(jì)算”判定表71要生成上面的判定表,具體的步驟如下:(1)確定規(guī)則的個(gè)數(shù)。例子中有兩個(gè)條件,每個(gè)條件有三種取值,故規(guī)則個(gè)數(shù)為3×3=9。(2)列出所有的條件和動(dòng)作。(3)列出所有的條件組合。(4)填寫每種條件組合下對(duì)應(yīng)的動(dòng)作。(5)若表中存在不同規(guī)則對(duì)應(yīng)相同動(dòng)作且其條件組合存在某種關(guān)系時(shí),需要對(duì)表進(jìn)行必要的化簡(jiǎn)。要生成上面的判定表,具體的步驟如下:723.判定樹判定樹是判定表的圖形表示,它與判定表的作用大致相同,但比判定表更加直觀,更易于理解和掌握。例如,圖3.13是采用判定樹對(duì)“基本獎(jiǎng)金計(jì)算”加工邏輯的描述。圖3.13“基本獎(jiǎng)金計(jì)算”判定樹3.判定樹圖3.13“基本獎(jiǎng)金計(jì)算”判定樹73判定樹雖然形式上比判定表直觀,但邏輯上沒有判定表嚴(yán)格,用戶在使用判定樹時(shí)容易造成個(gè)別條件的遺漏。由于三種描述方法具有的不同特點(diǎn),因而在實(shí)際的軟件開發(fā)工作中,結(jié)構(gòu)化語言、判定表和判定樹通常被混合使用。對(duì)于順序結(jié)構(gòu)和循環(huán)結(jié)構(gòu)采用結(jié)構(gòu)化語言進(jìn)行描述;對(duì)于存在多個(gè)條件組合的復(fù)雜判定問題采用判定表或判定樹進(jìn)行描述。判定樹雖然形式上比判定表直觀,但邏輯上沒有判定表嚴(yán)格743.5.4數(shù)據(jù)字典的建立1.建立數(shù)據(jù)字典的方法(1)手工建立。分別將數(shù)據(jù)字典中每一個(gè)條目按照規(guī)定的格式寫在卡片上,由專人負(fù)責(zé)管理和維護(hù)。為了便于查找,通??蓪⒖ㄆ诸悾礂l目的名稱或編號(hào)進(jìn)行排序。(2)自動(dòng)建立。利用現(xiàn)有的數(shù)據(jù)字典建立程序,通過按照指定格式輸入各類條目的內(nèi)容,由計(jì)算機(jī)自動(dòng)建立相應(yīng)的數(shù)據(jù)字典。且通常這類工具軟件還能夠?qū)⒑玫臄?shù)據(jù)字典進(jìn)行完整性、一致性檢查,以及進(jìn)行日常的管理和維護(hù)工作。如由美國(guó)密執(zhí)安大學(xué)開發(fā)的PSL/PSA系統(tǒng)就是這類軟件的杰出代表。3.5.4數(shù)據(jù)字典的建立752.建立數(shù)據(jù)字典的原則(1)所有定義必須嚴(yán)密、精確,不能存在二義性。(2)書寫格式應(yīng)簡(jiǎn)潔且嚴(yán)格。(3)應(yīng)可方便地實(shí)現(xiàn)對(duì)所需條目的按名查閱。(4)應(yīng)便于修改和更新。2.建立數(shù)據(jù)字典的原則763.6結(jié)構(gòu)化需求分析的若干技術(shù)傳統(tǒng)軟件工程中的需求分析方法主要包括原型化分析方法和結(jié)構(gòu)化分析方法等。其中,結(jié)構(gòu)化分析方法的出現(xiàn)最早,其應(yīng)用也最為廣泛,在設(shè)計(jì)階段還能與結(jié)構(gòu)化設(shè)計(jì)方法很好地銜接起來,構(gòu)成結(jié)構(gòu)化分析與設(shè)計(jì)方法,即SADT方法。本節(jié)將簡(jiǎn)要介紹采用結(jié)構(gòu)化分析方法進(jìn)行需求分析的技術(shù)。3.6結(jié)構(gòu)化需求分析的若干技術(shù)傳統(tǒng)軟件工程中的需77結(jié)構(gòu)化分析(StructureAnalysis)方法,簡(jiǎn)稱SA方法,是在20世紀(jì)70年代由美國(guó)YourdonE.等人提出的一種面向數(shù)據(jù)流進(jìn)行需求分析的方法。這種方法簡(jiǎn)單實(shí)用,適合于加工類型軟件系統(tǒng)的需求分析工作,尤其是信息管理類型的應(yīng)用軟件的開發(fā)。由于結(jié)構(gòu)化分析方法中利用許多圖形工具來表達(dá)系統(tǒng)的需求,使需求模型清晰、簡(jiǎn)潔、易讀、易修改,因此在軟件開發(fā)中得到了廣泛的應(yīng)用,相應(yīng)的支持工具也較多。結(jié)構(gòu)化分析(StructureAnalysis)方78在軟件工程技術(shù)中,用于控制問題復(fù)雜性的基本手段是“分解”和“抽象”。所謂分解,是指對(duì)于一個(gè)復(fù)雜的問題,為了將其復(fù)雜性降低到人們可以掌握的程度,可以將問題劃分為若干的小問題,然后分別加以解決。此外,在解決復(fù)雜問題時(shí),還可以分層進(jìn)行,即先暫時(shí)忽略細(xì)節(jié),只考慮問題最本質(zhì)的屬性,然后再逐層細(xì)化,直至涉及到最詳細(xì)的內(nèi)容,這就是“抽象”。結(jié)構(gòu)化分析方法的基本思想正是運(yùn)用了“分解”和“抽象”這兩個(gè)基本手段,采用“自頂向下,逐層分解”的分析思路,首先將整個(gè)系統(tǒng)抽象成一個(gè)加工,如圖3.14中的系統(tǒng)加工S。由于系統(tǒng)加工S很復(fù)雜,接著需要將其分解成若干個(gè)子加工;如果子系統(tǒng)仍然比較復(fù)雜,則需對(duì)子加工繼續(xù)進(jìn)行分解;在軟件工程技術(shù)中,用于控制問題復(fù)雜性的基本手段是“分79圖3.14系統(tǒng)的頂層數(shù)據(jù)流圖圖3.14系統(tǒng)的頂層數(shù)據(jù)流圖80重復(fù)這樣的分解,直到每個(gè)子加工都足夠簡(jiǎn)單,能夠被清楚地理解和表達(dá)為止。結(jié)構(gòu)化分析方法的“自頂向下,逐層分解”的過程如圖3.15所示?!白皂斚蛳?,逐層分解”充分體現(xiàn)了分解和抽象結(jié)合的原則,使人們不至于過早地陷入細(xì)節(jié),有助于有控制地逐步解決復(fù)雜的問題。頂層抽象地描述整個(gè)系統(tǒng),底層具體描述系統(tǒng)中的每一個(gè)細(xì)節(jié),而中間層則是從抽象向具體的逐步過渡。無論系統(tǒng)多么復(fù)雜,分析工作的難度都能得到有效的控制,使整個(gè)需求分析過程可以有條不紊地進(jìn)行。重復(fù)這樣的分解,直到每個(gè)子加工都足夠簡(jiǎn)單,能夠被清楚81圖3.15“自頂向下,逐步分解”過程示意圖圖3.15“自頂向下,逐步分解”過程示意圖821.建立數(shù)據(jù)模型實(shí)體—關(guān)系模型(E-R模型)是目前最常用的數(shù)據(jù)建模技術(shù),可以用于在需求分析階段完整、清晰地刻畫目標(biāo)系統(tǒng)中數(shù)據(jù)對(duì)象的構(gòu)成、屬性及數(shù)據(jù)對(duì)象之間的關(guān)系。建立E-R模型時(shí)需注意以下幾點(diǎn):(1)調(diào)查需求時(shí)應(yīng)要求用戶列出業(yè)務(wù)流程中涉及的所有“事物”,包括系統(tǒng)中各種輸入、輸出的數(shù)據(jù)對(duì)象實(shí)體和外部實(shí)體。(2)對(duì)系統(tǒng)中的每個(gè)實(shí)體逐個(gè)進(jìn)行研究,找出其與其他實(shí)體之間的對(duì)應(yīng)關(guān)系。此項(xiàng)工作應(yīng)迭代多次進(jìn)行,直至找出并定義了系統(tǒng)中所有實(shí)體之間的關(guān)系。1.建立數(shù)據(jù)模型83(3)在實(shí)體和其之間的聯(lián)系確定后,再定義每個(gè)實(shí)體的屬性。(4)最后應(yīng)對(duì)建立的E-R模型進(jìn)行形式化及評(píng)審,以保證此模型的正確性和完整性。(3)在實(shí)體和其之間的聯(lián)系確定后,再定義每個(gè)實(shí)體的屬性842.建立功能模型和數(shù)據(jù)字典結(jié)構(gòu)化分析方法主要使用數(shù)據(jù)流圖和數(shù)據(jù)字典等工具描述系統(tǒng)的功能需求信息。其中,數(shù)據(jù)流圖作為一種用于表達(dá)數(shù)據(jù)在系統(tǒng)中流動(dòng)情況的圖形工具,可以形象、直觀地描述系統(tǒng)功能的分解過程;數(shù)據(jù)字典是對(duì)數(shù)據(jù)流圖中數(shù)據(jù)的格式與內(nèi)容進(jìn)行定義的數(shù)據(jù)集合,此外在數(shù)據(jù)字典中還能夠?qū)?shù)據(jù)流的加工進(jìn)行直觀、明確的描述,加工邏輯的表達(dá)可以采用結(jié)構(gòu)化語言、判定表或判定樹等形式。在獲得系統(tǒng)數(shù)據(jù)流圖并細(xì)化求精完成之后,就可以利用數(shù)據(jù)字典對(duì)數(shù)據(jù)流圖中某些不夠確切的組成成分進(jìn)行嚴(yán)格準(zhǔn)確的定義。2.建立功能模型和數(shù)據(jù)字典853.7驗(yàn)證軟件需求3.7.1軟件需求規(guī)格說明的主要內(nèi)容需求分析階段的最后一步工作是將對(duì)系統(tǒng)分析的結(jié)果用標(biāo)準(zhǔn)化的文檔,即軟件需求規(guī)格說明書的形式清晰地描述出來,以此作為審查需求分析階段工作完成情況的依據(jù)和設(shè)計(jì)階段開展工作的基礎(chǔ)。需求規(guī)格說明書是系統(tǒng)所有相關(guān)人員,包括用戶和開發(fā)人員對(duì)軟件系統(tǒng)共同理解和認(rèn)識(shí)的表達(dá)形式,是需求分析階段最重要的技術(shù)文檔。3.7驗(yàn)證軟件需求3.7.1軟件需求規(guī)格說明的主要內(nèi)86需求規(guī)格說明書中應(yīng)包括如下主要內(nèi)容:(1)引言:用于說明項(xiàng)目的開發(fā)背景、應(yīng)用范圍,定義所用到的術(shù)語和縮略語,以及列出文檔中所引用的參考資料等。(2)項(xiàng)目概述:主要包括功能概述和約束條件。功能概述用于簡(jiǎn)要敘述系統(tǒng)預(yù)計(jì)實(shí)現(xiàn)的主要功能和各功能之間的相互關(guān)系;約束條件用于說明對(duì)系統(tǒng)設(shè)計(jì)產(chǎn)生影響的限制條件,如管理模式、用戶特點(diǎn)、硬件限制及技術(shù)或工具的制約因素等。需求規(guī)格說明書中應(yīng)包括如下主要內(nèi)容:87(3)具體需求:主要包括功能需求、接口定義、性能需求、軟件屬性及其他需求等。功能需求用于說明系統(tǒng)中每個(gè)功能的輸入、處理、輸出等信息,主要借助于數(shù)據(jù)流圖和數(shù)據(jù)字典等工具進(jìn)行表達(dá);接口定義用于說明系統(tǒng)軟/硬件接口、通信接口和用戶接口的需求;性能需求用于說明系統(tǒng)對(duì)包括精度、響應(yīng)時(shí)間、靈活性等方面的性能要求;軟件屬性用于說明軟件對(duì)可使用性、安全性、可維護(hù)性及可移植性等方面的需求;其他需求主要指系統(tǒng)對(duì)數(shù)據(jù)庫(kù)、操作及故障處理等方面的需求。(3)具體需求:主要包括功能需求、接口定義、性能需883.7.2軟件需求的驗(yàn)證由于需求分析階段取得的成果是軟件設(shè)計(jì)和軟件實(shí)現(xiàn)的重要基礎(chǔ),一旦前期的需求分析中出現(xiàn)了錯(cuò)誤或遺漏,就會(huì)導(dǎo)致后期的開發(fā)工作停滯不前或人力、物力的巨大浪費(fèi),甚至造成軟件開發(fā)工作失敗的嚴(yán)重后果。大量統(tǒng)計(jì)數(shù)字表明,軟件系統(tǒng)中有大約15?的錯(cuò)誤起源于錯(cuò)誤的需求。為了提高軟件質(zhì)量,降低軟件開發(fā)成本,確保軟件開發(fā)的順利進(jìn)行,對(duì)獲取的系統(tǒng)需求必須嚴(yán)格地進(jìn)行驗(yàn)證,以保證這些需求的正確性。需求驗(yàn)證一般應(yīng)從下述四個(gè)方面進(jìn)行。3.7.2軟件需求的驗(yàn)證891.驗(yàn)證需求的一致性所謂一致性,是指目標(biāo)系統(tǒng)中的所有需求應(yīng)該是和諧統(tǒng)一的,任何一條需求不能和其他需求互相矛盾。當(dāng)需求分析的結(jié)果是用非形式化的方法,如自然語言書寫的時(shí)候,除了靠人工審查、驗(yàn)證軟件需求規(guī)格說明書的正確性之外,目前還沒有其他更好的方法。當(dāng)目標(biāo)系統(tǒng)規(guī)模龐大、規(guī)格說明書篇幅很長(zhǎng)的時(shí)候,人工審查通常無法消除系統(tǒng)需求中存在的所有的冗余、遺漏和不一致。為了克服非形式化需求說明難以驗(yàn)證的困難,人們提出了描述軟件需求的形式化方法。當(dāng)軟件需求規(guī)格說明書是用形式化的需求描述語言書寫的時(shí)候,可以用軟件工具來驗(yàn)證需求的一致性。1.驗(yàn)證需求的一致性90
2.驗(yàn)證需求的完整性所謂完整性,是指目標(biāo)系統(tǒng)的需求必須是全面的,需求規(guī)格說明書中應(yīng)包括用戶需求的每一個(gè)功能或性能。由于軟件開發(fā)人員獲得的需求信息主要來源于用戶,而許多時(shí)候用戶并不能清楚地認(rèn)識(shí)到他們的需求,或不能有效地表達(dá)他們的需求,大多數(shù)用戶只有在面對(duì)目標(biāo)軟件系統(tǒng)時(shí),才能完整、確切地表述他們的需求,因此需求的完整性常常難以保證。要解決這個(gè)問題,需要開發(fā)人員與用戶雙方的充分配合和溝通,加強(qiáng)用戶對(duì)需求的確認(rèn)和評(píng)審,盡早發(fā)現(xiàn)需求中的遺漏。2.驗(yàn)證需求的完整性913.驗(yàn)證需求的有效性所謂有效性,是指目標(biāo)系統(tǒng)確實(shí)能夠滿足用戶的實(shí)際需求,確實(shí)能夠解決用戶面對(duì)的問題。由于只有目標(biāo)系統(tǒng)的用戶才能真正知道軟件需求規(guī)格說明書是否準(zhǔn)確地描述了他們的需求,因此要證明需求的有效性,與證明需求的完整性相同,也只有在用戶的密切配合下才能完成。3.驗(yàn)證需求的有效性92
4.驗(yàn)證需求的現(xiàn)實(shí)性
所謂現(xiàn)實(shí)性,是指確定的需求在現(xiàn)有硬件和軟件技術(shù)水平上應(yīng)該是能夠?qū)崿F(xiàn)的。為了驗(yàn)證需求的現(xiàn)實(shí)性,軟件開發(fā)人員應(yīng)該參照以往開發(fā)類似系統(tǒng)的經(jīng)驗(yàn),分析采用現(xiàn)有的軟、硬件技術(shù)實(shí)現(xiàn)目標(biāo)系統(tǒng)的可能性,必要的時(shí)候可以通過仿真或性能模擬技術(shù)來輔助分析需求的現(xiàn)實(shí)性。4.驗(yàn)證需求的現(xiàn)實(shí)性933.8小結(jié)需求分析是軟件生存周期中的一個(gè)重要階段,它的根本任務(wù)是確定用戶對(duì)系統(tǒng)的需求,即明確系統(tǒng)究竟要“做什么”。由于需求分析的結(jié)果是軟件設(shè)計(jì)和軟件實(shí)現(xiàn)的基礎(chǔ),因此為待開發(fā)系統(tǒng)建立的需求模型必須是清晰的、一致的、精確的且無二義性的,并要完整地反映出現(xiàn)實(shí)系統(tǒng)的本質(zhì)和實(shí)際。為了全面反映出系統(tǒng)各方面的需求,在需求分析階段應(yīng)在與用戶充分溝通和調(diào)查研究的基礎(chǔ)上,運(yùn)用各種需求分析的工具和技術(shù),為系統(tǒng)建立準(zhǔn)確的數(shù)據(jù)模型、功能模型、行為模型以及數(shù)據(jù)字典。3.8小結(jié)需求分析是軟件生存周期中的一個(gè)重要階94結(jié)構(gòu)化分析方法是傳統(tǒng)軟件工程中公認(rèn)的技術(shù)成熟和使用廣泛的需求分析方法。它主要借助于分層數(shù)據(jù)流圖和數(shù)據(jù)字典等圖形及半形式化的工具表達(dá)系統(tǒng)的需求。數(shù)據(jù)流圖能夠直觀、清晰地描述系統(tǒng)中數(shù)據(jù)流的流動(dòng)和處理情況,反映出系統(tǒng)所需要實(shí)現(xiàn)的各個(gè)邏輯功能;數(shù)據(jù)字典作為數(shù)據(jù)流圖的必要補(bǔ)充,能夠準(zhǔn)確地定義數(shù)據(jù)流圖中出現(xiàn)的基本元素,并能通過結(jié)構(gòu)化語言、判定表及判定樹等手段對(duì)數(shù)據(jù)流圖中出現(xiàn)的加工進(jìn)行詳細(xì)的描述。結(jié)構(gòu)化分析方法是傳統(tǒng)軟件工程中公認(rèn)的技術(shù)成熟和使用廣95由于結(jié)構(gòu)化分析方法中運(yùn)用了分解和抽象的原則,采用了“自頂向下,逐步分解”的基本思想來對(duì)系統(tǒng)進(jìn)行分析,有效地控制了問題的復(fù)雜性,保證了需求分析的順利進(jìn)行。為了確保需求分析階段工作的正確性,不至于給后面的開發(fā)工作留下隱患,在需求分析結(jié)束之前,必須對(duì)得到的軟件需求進(jìn)行驗(yàn)證。審查需求分析結(jié)果的主要依據(jù)是軟件需求規(guī)格說明書,它是需求分析階段中最重要的技術(shù)文檔。由于結(jié)構(gòu)化分析方法中運(yùn)用了分解和抽象的原則,采用了“96第3章軟件需求分析與建模3.1需求分析3.2數(shù)據(jù)建模3.3功能建模3.4行為建模3.5數(shù)據(jù)字典3.6結(jié)構(gòu)化需求分析的若干技術(shù)3.7驗(yàn)證軟件需求3.8小結(jié)第3章軟件需求分析與建模3.1需求分析973.1需求分析3.1.1需求分析的任務(wù)需求分析的主要任務(wù)就是要通過軟件開發(fā)人員與用戶的交流和討論,準(zhǔn)確地獲取用戶對(duì)系統(tǒng)的具體要求。需求分析中任何的含混不清或微小的遺漏都可能會(huì)造成系統(tǒng)開發(fā)中的重大問題甚至導(dǎo)致失敗。在正確理解用戶需求的前提下,軟件開發(fā)人員還需要將這些需求準(zhǔn)確地以文檔的形式表達(dá)出來,作為設(shè)計(jì)階段的依據(jù)。需求分析階段結(jié)束時(shí)需要提交的主要文檔是軟件規(guī)格說明書。3.1需求分析3.1.1需求分析的任務(wù)98由于需求分析研究的對(duì)象是用戶對(duì)開發(fā)項(xiàng)目的要求,在實(shí)現(xiàn)這一階段任務(wù)時(shí)必須要注意兩個(gè)問題。問題之一在于:一個(gè)項(xiàng)目的參與者既包括軟件設(shè)計(jì)開發(fā)人員,又包括用戶,他們之間交流的難題會(huì)給軟件的開發(fā)留下隱患。用戶往往在軟件交付使用時(shí),才會(huì)發(fā)現(xiàn)系統(tǒng)存在的一系列問題。這就要求雙方必須在需求分析過程中加強(qiáng)溝通和協(xié)調(diào)。一方面,軟件設(shè)計(jì)人員應(yīng)盡量使用通俗的語言與用戶進(jìn)行交流;另一方面,用戶應(yīng)積極主動(dòng)地配合軟件設(shè)計(jì)人員的工作。問題之二在于:為了保證需求階段能夠提出完整、準(zhǔn)確的系統(tǒng)邏輯模型,開發(fā)人員必須花費(fèi)足夠的時(shí)間,全面了解用戶的需要,絕不能在需求模糊的情況下倉(cāng)促進(jìn)行軟件的設(shè)計(jì)和編程。根據(jù)國(guó)外的統(tǒng)計(jì)資料表明,在典型環(huán)境下開發(fā)軟件,需求分析階段的工作量大約要占到整個(gè)系統(tǒng)開發(fā)工作量的20%左右。由于需求分析研究的對(duì)象是用戶對(duì)開發(fā)項(xiàng)目的要求,在實(shí)現(xiàn)99用戶對(duì)系統(tǒng)的需求通??煞譃槿缦聝深悾?1)功能性需求:主要說明了待開發(fā)系統(tǒng)在功能上實(shí)際應(yīng)做到什么,是用戶最主要的需求。通常包括系統(tǒng)的輸入、系統(tǒng)能完成的功能、系統(tǒng)的輸出及其他反應(yīng)。(2)非功能性需求:從各個(gè)角度對(duì)所考慮的可能的解決方案的約束和限制。主要包括:過程需求(如交付需求、實(shí)現(xiàn)方法需求等)、產(chǎn)品需求(如可靠性需求、可移植性需求、安全保密性需求等)和外部需求(如法規(guī)需求、費(fèi)用需求等)等。用戶對(duì)系統(tǒng)的需求通??煞譃槿缦聝深悾?003.1.2需求分析的步驟需求分析階段的工作,大致可分為如下幾個(gè)步驟進(jìn)行:(1)通過調(diào)查研究,獲取用戶的需求。軟件開發(fā)人員只有通過認(rèn)真細(xì)致的調(diào)查研究,才能獲得進(jìn)行系統(tǒng)分析的原始資料。需求信息的獲取可來源于閱讀描述系統(tǒng)需求的用戶文檔;對(duì)相關(guān)軟件、技術(shù)的市場(chǎng)調(diào)查;對(duì)管理部門、用戶的訪問咨詢;對(duì)工作現(xiàn)場(chǎng)的實(shí)際考察等。3.1.2需求分析的步驟101(2)去除非本質(zhì)因素,確定系統(tǒng)的真正需求。對(duì)于獲取的原始需求,軟件開發(fā)人員需要根據(jù)掌握的專業(yè)知識(shí),運(yùn)用抽象的邏輯思維,找出需求間的內(nèi)在聯(lián)系和矛盾,去除需求中不合理和非本質(zhì)的部分,確定軟件系統(tǒng)的真正需求。(3)描述需求,建立系統(tǒng)的邏輯模型。對(duì)于確定的系統(tǒng)需求,軟件開發(fā)人員要通過現(xiàn)有的需求分析方法及工具對(duì)其進(jìn)行清晰、準(zhǔn)確的描述,建立無二義性的、完整的系統(tǒng)邏輯模型。(2)去除非本質(zhì)因素,確定系統(tǒng)的真正需求。102(4)書寫需求說明書,進(jìn)行需求復(fù)審。需求階段應(yīng)提交的主要文檔包括需求規(guī)格說明書、初步的用戶手冊(cè)和修正后的開發(fā)計(jì)劃。其中,需求規(guī)格說明書是對(duì)分析階段主要成果的綜合描述,是該階段最重要的技術(shù)文檔。為了保證軟件開發(fā)的質(zhì)量,對(duì)需求分析階段的工作要按照嚴(yán)格的規(guī)范進(jìn)行復(fù)審,從不同的技術(shù)角度對(duì)該階段工作做出綜合性的評(píng)價(jià)。復(fù)審即要有用戶參加,也要有管理部門和軟件開發(fā)人員參加。(4)書寫需求說明書,進(jìn)行需求復(fù)審。1033.1.3需求分析的原則目前存在著許多需求分析的方法,雖然各種方法都有其獨(dú)特的描述方法,但不論采用何種方法,需求分析都必須遵循以下基本原則:(1)能夠表達(dá)和理解問題的數(shù)據(jù)域和功能域。所有軟件開發(fā)的最終目的都是為了解決數(shù)據(jù)處理的問題,數(shù)據(jù)處理的本質(zhì)就是將一種形式的數(shù)據(jù)轉(zhuǎn)換成另一種形式的數(shù)據(jù),即通過進(jìn)行一系列加工將輸入的原始數(shù)據(jù)轉(zhuǎn)換為所需的結(jié)果數(shù)據(jù)。需求分析階段必須明確系統(tǒng)中應(yīng)具備的每一個(gè)加工、加工的處理對(duì)象和由加工所引起的數(shù)據(jù)形式的變化。3.1.3需求分析的原則104(2)能夠?qū)?fù)雜問題分解化簡(jiǎn)。為了便于問題的解決和實(shí)現(xiàn),在需求分析過程中需要對(duì)于原本復(fù)雜的問題按照某種合適的方式進(jìn)行分解(對(duì)功能域和數(shù)據(jù)域均可)。分解可以是同一層次上的橫向分解,也可以是多層上的縱向分解。每一步分解都是在原有基礎(chǔ)上對(duì)系統(tǒng)的細(xì)化,使系統(tǒng)的理解和實(shí)現(xiàn)變得較為容易。(2)能夠?qū)?fù)雜問題分解化簡(jiǎn)。為了便于問題的解決和105(3)能夠給出系統(tǒng)的邏輯表示和物理表示。系統(tǒng)需求的邏輯表示用于指明系統(tǒng)所要達(dá)到的功能要求和需要處理的數(shù)據(jù),不涉及實(shí)現(xiàn)的細(xì)節(jié)。系統(tǒng)需求的物理表示用于指明處理功能和數(shù)據(jù)結(jié)構(gòu)的實(shí)際表現(xiàn)形式,通常由系統(tǒng)中的設(shè)備決定。如處理數(shù)據(jù)的來源,某些軟件可能由終端輸入,另一些軟件可能由特定設(shè)備提供。給出系統(tǒng)的邏輯表示和物理表示對(duì)滿足系統(tǒng)處理需求所提出的邏輯限制條件和系統(tǒng)中其他成分提出的物理限制是必不可少的。(3)能夠給出系統(tǒng)的邏輯表示和物理表示。系統(tǒng)需求的1063.2數(shù)據(jù)建模3.2.1實(shí)體模型1.實(shí)體模型的概念對(duì)于一個(gè)軟件系統(tǒng)來說,所涉及的數(shù)據(jù)成千上萬,如何對(duì)這些復(fù)雜數(shù)據(jù)及其之間的關(guān)系進(jìn)行分析并將它們以最優(yōu)的方式組織起來,對(duì)軟件開發(fā)的成敗起著非常重要的作用。3.2數(shù)據(jù)建模3.2.1實(shí)體模型107E-R(Entity-Relation)方法,即實(shí)體—聯(lián)系方法是目前最常用的數(shù)據(jù)建模方法,可以用于在需求分析階段清晰地表達(dá)目標(biāo)系統(tǒng)中數(shù)據(jù)之間的聯(lián)系及其組織方式,建立系統(tǒng)的實(shí)體數(shù)據(jù)模型(E-R模型)。實(shí)體模型是一種面向問題的概念數(shù)據(jù)模型,是按照用戶的觀點(diǎn)對(duì)系統(tǒng)的數(shù)據(jù)和信息進(jìn)行建模的,因此它與軟件系統(tǒng)中的實(shí)現(xiàn)方法,如數(shù)據(jù)結(jié)構(gòu)、存取路徑、存取效率等無關(guān)。實(shí)體模型可以根據(jù)需要在軟件實(shí)現(xiàn)時(shí)轉(zhuǎn)換成各種不同數(shù)據(jù)庫(kù)管理系統(tǒng)所支持的數(shù)據(jù)物理模型。實(shí)體模型由實(shí)體、聯(lián)系和屬性三個(gè)基本成分組成。E-R(Entity-Relation)方法,即實(shí)體108(1)實(shí)體:指客觀世界存在的且可以相互區(qū)分的事物。實(shí)體可以是人,也可以是物,還可以是抽象概念。如職工、計(jì)算機(jī)、產(chǎn)品都是實(shí)體。(2)屬性:有時(shí)也稱性質(zhì),是指實(shí)體某一方面的特征。一個(gè)實(shí)體通常由多個(gè)屬性值組成。如學(xué)生實(shí)體具有學(xué)號(hào)、姓名、專業(yè)、年級(jí)等屬性。(3)聯(lián)系:指實(shí)體之間的相互關(guān)系。實(shí)體之間的聯(lián)系可主要?jiǎng)澐譃槿悾阂粚?duì)一(1:1)、一對(duì)多(1:n)和多對(duì)多(m:n)。聯(lián)系也可以具有屬性。為了便于實(shí)現(xiàn),在進(jìn)行數(shù)據(jù)庫(kù)設(shè)計(jì)時(shí)通常將多對(duì)多的聯(lián)系轉(zhuǎn)換為一對(duì)多的聯(lián)系,如圖4.1所示。(1)實(shí)體:指客觀世界存在的且可以相互區(qū)分的事物。109圖3.1學(xué)生和課程之間的E-R模型學(xué)生和課程之間的多對(duì)多聯(lián)系E-R模型;(b)將多對(duì)多聯(lián)系轉(zhuǎn)換為一對(duì)多聯(lián)系E-R模型圖3.1學(xué)生和課程之間的E-R模型1102.實(shí)體-模型中的基本符號(hào)表3.1E-R模型中的基本符號(hào)符號(hào)含義表示實(shí)體表示實(shí)體間的聯(lián)系,與實(shí)體間的連線上需用數(shù)字標(biāo)明具體的對(duì)應(yīng)關(guān)系表示與實(shí)體有關(guān)的屬性用于實(shí)體、屬性及聯(lián)系的連接2.實(shí)體-模型中的基本符號(hào)表3.1E-R模型中的基本符111
3.實(shí)體-模型的建立要建立系統(tǒng)的實(shí)體模型,通??砂慈缦虏襟E進(jìn)行:(1)對(duì)系統(tǒng)的數(shù)據(jù)域和功能域進(jìn)行分析,確定系統(tǒng)中所涉及的實(shí)體。例如,在圖3.2所示的工資計(jì)算系統(tǒng)中,單位對(duì)職工的工作情況進(jìn)行考勤,根據(jù)出勤結(jié)果、基本工資檔案、獎(jiǎng)金及扣款計(jì)算職工的實(shí)發(fā)工資。因此,工資系統(tǒng)中所涉及的實(shí)體就包括職工、出勤、獎(jiǎng)勵(lì)和扣款。3.實(shí)體-模型的建立112圖3.2工資計(jì)算系統(tǒng)的E-R模型圖3.2工資計(jì)算系統(tǒng)的E-R模型113(2)確定系統(tǒng)中各實(shí)體之間的聯(lián)系。如工資計(jì)算系統(tǒng)中,一名職工一個(gè)月只有一條出勤記錄,因此職工和出勤兩個(gè)實(shí)體之間是一對(duì)一的聯(lián)系;一名職工在一個(gè)月中對(duì)應(yīng)著多項(xiàng)扣款,如水電費(fèi)、缺勤扣款、個(gè)人所得稅等,因此職工和扣款之間是一對(duì)多的聯(lián)系;同理,一名職工在一個(gè)月中可以獲得多項(xiàng)獎(jiǎng)勵(lì),因此職工和獎(jiǎng)金之間也是一對(duì)多的聯(lián)系。(2)確定系統(tǒng)中各實(shí)體之間的聯(lián)系。如工資計(jì)算系統(tǒng)中114(3)確定各實(shí)體及聯(lián)系的屬性。例如,工資計(jì)算系統(tǒng)的職工實(shí)體具有職工號(hào)、性別、職稱、年齡、部門、基本工資等屬性。目前,最常用的數(shù)據(jù)庫(kù)模型是關(guān)系模型,它是通過一張二維表來表示和處理實(shí)體集合和屬性關(guān)系的數(shù)據(jù)庫(kù)系統(tǒng)方法。在關(guān)系數(shù)據(jù)庫(kù)中,為了避免出現(xiàn)數(shù)據(jù)冗余、二義性的問題,方便數(shù)據(jù)庫(kù)的各種操作,二維表必須滿足以下的規(guī)范化約束條件:(3)確定各實(shí)體及聯(lián)系的屬性。例如,工資計(jì)算系統(tǒng)的115(1)表格中的每個(gè)信息項(xiàng)必須是一個(gè)不可分割的數(shù)據(jù)項(xiàng)。(2)表格每一列中所有信息項(xiàng)必須是同類型的數(shù)據(jù),各列在表中的次序任意,每列對(duì)應(yīng)一個(gè)惟一的名字。(3)表格中每一行的數(shù)據(jù)各不相同,各行在表中的次序任意。(1)表格中的每個(gè)信息項(xiàng)必須是一個(gè)不可分割的數(shù)據(jù)項(xiàng)1163.2.2數(shù)據(jù)建模的其他圖形工具1.層次方框圖層次方框圖通過樹型結(jié)構(gòu)的一系列多層次的矩形框描述復(fù)雜數(shù)據(jù)的層次結(jié)構(gòu)。樹型結(jié)構(gòu)頂端的矩形框只有一個(gè),用于代表完整的數(shù)據(jù)結(jié)構(gòu)。下面各層的矩形框是對(duì)完整數(shù)據(jù)結(jié)構(gòu)的逐步分解和細(xì)化得到的數(shù)據(jù)子集;底層的矩形框代表組成該數(shù)據(jù)結(jié)構(gòu)的基本元素,是數(shù)據(jù)的最小單位,不可再分割。層次方框圖非常適合描述自頂向下的需求分析方法中數(shù)據(jù)的層次關(guān)系。系統(tǒng)分析員可以從對(duì)頂層信息的分類開始,沿著層次圖中的每條路徑逐步細(xì)化,直到確定了數(shù)據(jù)結(jié)構(gòu)的全部細(xì)節(jié)為止。例如,某單位職工的實(shí)發(fā)工資由應(yīng)發(fā)工資和扣款兩部分組成,每部分又可進(jìn)一步細(xì)分。如應(yīng)發(fā)工資又可分為基本工資和獎(jiǎng)金;基本工資又可分為國(guó)家工資、津貼、補(bǔ)貼;獎(jiǎng)金也可分為出勤獎(jiǎng)和業(yè)績(jī)獎(jiǎng);津貼和補(bǔ)貼還可以再進(jìn)一步地細(xì)分。實(shí)發(fā)工資的層次方框圖如圖3.3所示。3.2.2數(shù)據(jù)建模的其他圖形工具117圖3.3某單位職工實(shí)發(fā)工資的層次方框圖圖3.3某單位職工實(shí)發(fā)工資的層次方框圖118
2.Warnier圖Warnier圖是法國(guó)科學(xué)家Warnier提出的另一種描述數(shù)據(jù)層次結(jié)構(gòu)的圖形工具。與層次方框圖類似,Warnier圖也采用了樹型結(jié)構(gòu)表示數(shù)據(jù),但與層次方框圖相比,Warnier圖對(duì)數(shù)據(jù)的描繪手段更加豐富。利用Warnier圖可以清楚地表明數(shù)據(jù)的邏輯結(jié)構(gòu)中某類信息的重復(fù)出現(xiàn)及某些特定信息出現(xiàn)的條件約束,因此,Warnier圖可以較為容易地轉(zhuǎn)變成軟件設(shè)計(jì)的工具。2.Warnier圖119在Warnier圖中,使用大括號(hào)來區(qū)分?jǐn)?shù)據(jù)結(jié)構(gòu)的層次。一個(gè)大括號(hào)內(nèi)的所有名字都屬于同一類信息;異或符號(hào)“?”用于表明一類信息或一個(gè)數(shù)據(jù)元素在一定條件下出現(xiàn),而且在這個(gè)符號(hào)上、下方的兩個(gè)名字所代表的數(shù)據(jù)只能出現(xiàn)一個(gè)。在一個(gè)名字下面或右邊的圓括號(hào)中出現(xiàn)的數(shù)字指明了這個(gè)名字所代表的信息類或數(shù)據(jù)元素在該數(shù)據(jù)結(jié)構(gòu)中重復(fù)出現(xiàn)的次數(shù)。例如,某計(jì)算機(jī)公司的一種軟件產(chǎn)品要么是系統(tǒng)軟件,要么是應(yīng)用軟件;系統(tǒng)軟件中有k1種操作系統(tǒng)、k2種編譯程序,此外還有工具軟件;工具軟件進(jìn)一步又可劃分為編輯程序、測(cè)試工具和輔助設(shè)計(jì)工具,它們各自的數(shù)量分別為j1、j2和j3。描繪這種軟件產(chǎn)品的Warnier圖如圖3.4所示。在Warnier圖中,使用大括號(hào)來區(qū)分?jǐn)?shù)據(jù)結(jié)構(gòu)的層次120圖3.4描繪一種軟件產(chǎn)品的Warnier圖圖3.4描繪一種軟件產(chǎn)品的Warnier圖1213.3功能建模在需求分析階段,數(shù)據(jù)流(也稱信息流)是系統(tǒng)分析的基礎(chǔ)。所謂數(shù)據(jù)流,形象地說就是系統(tǒng)中“流動(dòng)的數(shù)據(jù)結(jié)構(gòu)”。數(shù)據(jù)流圖(DFD,DataFlowDiagram)是描述軟件系統(tǒng)中數(shù)據(jù)處理過程的一種有力的圖形工具。數(shù)據(jù)流圖從數(shù)據(jù)傳遞和加工的角度出發(fā),刻畫數(shù)據(jù)流從輸入到輸出的移動(dòng)和變換過程。由于它能夠清晰地反映系統(tǒng)必須完成的邏輯功能,所以它已經(jīng)成為需求分析階段中功能建模最常用的工具。3.3功能建模在需求分析階段,數(shù)據(jù)流(也稱1223.3.1數(shù)據(jù)流圖的基本符號(hào)表3.2數(shù)據(jù)流圖中的基本符號(hào)或或或符號(hào)含義數(shù)據(jù)的源點(diǎn)或終點(diǎn)數(shù)據(jù)流數(shù)據(jù)存儲(chǔ)加工3.3.1數(shù)據(jù)流圖的基本符號(hào)表3.2數(shù)據(jù)流圖中的基本123
1.數(shù)據(jù)的源點(diǎn)或終點(diǎn)數(shù)據(jù)的源點(diǎn)或終點(diǎn)用于反映數(shù)據(jù)流圖與外部實(shí)體之間的聯(lián)系,表示圖中的輸入數(shù)據(jù)來自哪里或處理結(jié)果送向何處。如圖3.5中的人事部門、后勤部門是工資系統(tǒng)中數(shù)據(jù)的源點(diǎn),而職工和銀行則是工資系統(tǒng)中數(shù)據(jù)的終點(diǎn)。1.數(shù)據(jù)的源點(diǎn)或終點(diǎn)124
2.數(shù)據(jù)流數(shù)據(jù)流是數(shù)據(jù)在系統(tǒng)中(包括數(shù)據(jù)處理之間、數(shù)據(jù)處理和數(shù)據(jù)存儲(chǔ)之間以及數(shù)據(jù)處理和數(shù)據(jù)的源點(diǎn)或終點(diǎn)之間)的傳送通道,數(shù)據(jù)流符號(hào)的箭頭指明了數(shù)據(jù)的流動(dòng)方向。如圖3.5中的出勤表、業(yè)績(jī)表、水電扣款表、工資條及工資存款清單等均為數(shù)據(jù)流。在數(shù)據(jù)流圖中,除了連接加工和數(shù)據(jù)存儲(chǔ)的數(shù)據(jù)流以外,其他的數(shù)據(jù)流在圖中都對(duì)應(yīng)一個(gè)惟一的名字。2.數(shù)據(jù)流125圖3.5工資計(jì)算系統(tǒng)的頂層(0層)數(shù)據(jù)流圖圖3.5工資計(jì)算系統(tǒng)的頂層(0層)數(shù)據(jù)流圖126
3.加工加工也稱為數(shù)據(jù)處理,是對(duì)系統(tǒng)中的數(shù)據(jù)流進(jìn)行的某些操作或變換。圖中每個(gè)加工都要有對(duì)應(yīng)的名稱,最常見的名稱是由一個(gè)表明具體動(dòng)作的動(dòng)詞和一個(gè)表明處理對(duì)象的名詞構(gòu)成的,如計(jì)算應(yīng)發(fā)工資、打印工資清單等。
4.數(shù)據(jù)存儲(chǔ)在數(shù)據(jù)流圖中用于保存數(shù)據(jù)的數(shù)據(jù)文件被稱為數(shù)據(jù)存儲(chǔ),它可以是數(shù)據(jù)庫(kù)文件或任何其他形式的數(shù)據(jù)組織。流向數(shù)據(jù)存儲(chǔ)的數(shù)據(jù)流可理解為向文件寫入數(shù)據(jù)或?qū)ξ募M(jìn)行查詢,流出數(shù)據(jù)存儲(chǔ)的數(shù)據(jù)流可理解為從文件中讀取數(shù)據(jù)或得到查詢結(jié)果。3.加工1273.3.2數(shù)據(jù)流與加工之間的關(guān)系在數(shù)據(jù)流圖中,可以有兩個(gè)以上的數(shù)據(jù)流進(jìn)入同一個(gè)加工,也可以有兩個(gè)以上的數(shù)據(jù)流從同一個(gè)加工中流出,這樣的多個(gè)數(shù)據(jù)流之間往往存在一定的關(guān)系。為了表示這些數(shù)據(jù)流之間的關(guān)系,需要在數(shù)據(jù)流圖中給這些數(shù)據(jù)流對(duì)應(yīng)的加工加上一定的標(biāo)記符號(hào)。在表3.3中列出了加工中常見的幾種關(guān)系的表示方法。(表中以從加工流入或流出兩個(gè)數(shù)據(jù)流為例)。3.3.2數(shù)據(jù)流與加工之間的關(guān)系128表3.3加工中常見關(guān)系的符號(hào)表示符號(hào)含義由數(shù)據(jù)A和B共同變換為數(shù)據(jù)C由數(shù)據(jù)A變換為數(shù)據(jù)B和數(shù)據(jù)C由數(shù)據(jù)A或B,或者數(shù)據(jù)A和B共同變換為數(shù)據(jù)C由數(shù)據(jù)A變換為數(shù)據(jù)B或C,或者同時(shí)變換為數(shù)據(jù)B和C由數(shù)據(jù)A或B其中之一變換為數(shù)據(jù)C由數(shù)據(jù)A變換為數(shù)據(jù)B或C其中之一表3.3加工中常見關(guān)系的符號(hào)表示符號(hào)含1293.3.3數(shù)據(jù)流模型的建立方法
對(duì)于一個(gè)復(fù)雜的系統(tǒng)來說,可能存在著幾十個(gè)甚至成百上千個(gè)加工,若要在一個(gè)數(shù)據(jù)流圖中清楚地描述出整個(gè)系統(tǒng)加工的過程是很困難的,而采用對(duì)數(shù)據(jù)流圖進(jìn)行分層的方法則可以很好地解決這個(gè)問題。按照結(jié)構(gòu)化分析方法中“自頂向下,逐步分解”的思想,可以先將整個(gè)系統(tǒng)看作是一個(gè)加工,它的輸入數(shù)據(jù)和輸出數(shù)據(jù)表明了系統(tǒng)和外部環(huán)境的接口,從而首先畫出系統(tǒng)的頂層數(shù)據(jù)流圖。為了能夠清楚地表明系統(tǒng)加工的詳細(xì)過程,接著從頂層數(shù)據(jù)流圖出發(fā),逐層地對(duì)系統(tǒng)進(jìn)行分解。每分解一次,系統(tǒng)中加工的數(shù)量就隨之增加,每個(gè)加工的功能描述也越來越具體。重復(fù)這種分解,直至得到系統(tǒng)的底層數(shù)據(jù)流圖。底層數(shù)據(jù)流圖中的所有加工都應(yīng)是不可再分解的、最簡(jiǎn)單的“原子加工”。通過分解過程中得到的這一組分層數(shù)據(jù)流圖(由頂層、中間層和底層數(shù)據(jù)流圖共同構(gòu)成)就可以十分清晰地描述出整個(gè)系統(tǒng)所有加工的詳細(xì)情況。3.3.3數(shù)據(jù)流模型的建立方法130下面以某單位工資管理系統(tǒng)為例,來介紹一下分層數(shù)據(jù)流模型的建立方法。1.建立頂層數(shù)據(jù)流圖任何系統(tǒng)的頂層數(shù)據(jù)流圖都只有一個(gè),用于反映目標(biāo)系統(tǒng)所要實(shí)現(xiàn)的功能及與外部環(huán)境的接口。頂層數(shù)據(jù)流圖中只有一個(gè)代表整個(gè)系統(tǒng)的加工,數(shù)據(jù)的源點(diǎn)和終點(diǎn)對(duì)應(yīng)著系統(tǒng)的外部實(shí)體,表明了系統(tǒng)輸入數(shù)據(jù)的來源和輸出數(shù)據(jù)的去向。工資管理系統(tǒng)的頂層數(shù)據(jù)流圖如圖3.5所示。下面以某單位工資管理系統(tǒng)為例,來介紹一下分層數(shù)據(jù)流模131
2.數(shù)據(jù)流圖的分層細(xì)化首先按照系統(tǒng)的功能,對(duì)頂層數(shù)據(jù)流圖進(jìn)行分解,生成第一層數(shù)據(jù)流圖。如例子中的工資計(jì)算系統(tǒng)可劃分為計(jì)算工資、打印工資清單和工資轉(zhuǎn)存三個(gè)加工。其中,計(jì)算工資完成單位職工工資計(jì)算,生成工資清單的功能;打印工資清單完成工資條的打印功能;工資轉(zhuǎn)存完成生成職工工資存款清單并將其發(fā)送到銀行的功能。對(duì)劃分得到的加工應(yīng)進(jìn)行編號(hào),如圖3.6中工資計(jì)算的編號(hào)為1,打印工資清單的編號(hào)為2,工資轉(zhuǎn)存的編號(hào)為3。加工之間的數(shù)據(jù)流也應(yīng)在數(shù)據(jù)流圖中標(biāo)明,如圖3.6中計(jì)算工資將單位職工的實(shí)發(fā)工資表傳送給工資轉(zhuǎn)存。此外,在標(biāo)出數(shù)據(jù)流和劃分加工的同時(shí),還要在圖中畫出涉及的數(shù)據(jù)存儲(chǔ)。2.數(shù)據(jù)流圖的分層細(xì)化132圖3.6工資計(jì)算系統(tǒng)第一層數(shù)據(jù)流圖圖3.6工資計(jì)算系統(tǒng)第一層數(shù)據(jù)流圖133對(duì)第一層數(shù)據(jù)流圖中的加工繼續(xù)分解,則可得到第二層數(shù)據(jù)流圖,如圖3.7所示。對(duì)分解得到的加工進(jìn)行編號(hào),以反映出它與上層數(shù)據(jù)流圖之間的關(guān)系,如對(duì)第一層數(shù)據(jù)流圖中的計(jì)算工資分解得到的數(shù)據(jù)流圖中的加工的編號(hào)分別為1.1~1.4。若數(shù)據(jù)流圖中的加工還可繼續(xù)細(xì)化,則重復(fù)以上分解過程,直到獲得系統(tǒng)的底層數(shù)據(jù)流圖。工資計(jì)算系統(tǒng)的第三層數(shù)據(jù)流圖如圖3.8所示。對(duì)第一層數(shù)據(jù)流圖中的加工繼續(xù)分解,則可得到第二層數(shù)據(jù)134圖3.7工資計(jì)算系統(tǒng)的第二層數(shù)據(jù)流圖(a)“計(jì)算工資”子數(shù)據(jù)流圖;(b)“工資轉(zhuǎn)存”子數(shù)據(jù)流圖圖3.7工資計(jì)算系統(tǒng)的第二層數(shù)據(jù)流圖135圖3.8工資計(jì)算系統(tǒng)的第三
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 現(xiàn)代醫(yī)療行業(yè)的綠色實(shí)踐與創(chuàng)新
- 水能開發(fā)的綠色之路現(xiàn)狀與展望
- 生產(chǎn)數(shù)據(jù)驅(qū)動(dòng)的供應(yīng)鏈決策優(yōu)化探討
- 現(xiàn)代生活中的營(yíng)養(yǎng)教育與指導(dǎo)
- 廣西2025年廣西血液中心招聘4人筆試歷年參考題庫(kù)附帶答案詳解
- Unit 5 Weather and Life Lesson 3(說課稿)-2024-2025學(xué)年重大版(2024)英語三年級(jí)上冊(cè)
- 醫(yī)療護(hù)理醫(yī)學(xué)培訓(xùn) 醫(yī)療與護(hù)理文件記錄課件
- 現(xiàn)代職業(yè)培訓(xùn)中勞動(dòng)教育的國(guó)際比較與借鑒
- 現(xiàn)代辦公環(huán)境下如何有效運(yùn)用情感智商進(jìn)行人際溝通與管理
- 2024年五年級(jí)數(shù)學(xué)上冊(cè) 6 多邊形的面積第1課時(shí) 平行四邊形的面積配套說課稿 新人教版
- 國(guó)際尿失禁咨詢委員會(huì)尿失禁問卷表
- 國(guó)開行政管理論文行政組織的變革及其現(xiàn)實(shí)性研究
- 運(yùn)動(dòng)技能學(xué)習(xí)中的追加反饋
- 《淄博張店區(qū)停車問題治理現(xiàn)狀及優(yōu)化對(duì)策分析【開題報(bào)告+正文】15000字 》
- 常用電子元器件基礎(chǔ)知識(shí)演示
- GB/T 32918.4-2016信息安全技術(shù)SM2橢圓曲線公鑰密碼算法第4部分:公鑰加密算法
- 2023年藥事法規(guī)教學(xué)案例庫(kù)及案例分析
- 北京市水務(wù)安全生產(chǎn)風(fēng)險(xiǎn)評(píng)估指南
- 吸引器教學(xué)講解課件
- 醫(yī)學(xué)心理學(xué)人衛(wèi)八版66張課件
- 仿古建筑施工常見質(zhì)量通病及防治措施
評(píng)論
0/150
提交評(píng)論