版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
4.1需求分析概述
4.2軟件需求的概念與層次
4.3獲取需求的目的和獲取需求常用的方法
4.4需求分析的目標(biāo)和任務(wù)
4.5需求分析的過程
4.6需求分析的原則
4.7需求分析階段常見的問題及需求分析的技巧
4.8需求分析的方法
4.9軟件需求分析文檔4.1需求分析概述4.1.1需求因素對項(xiàng)目成敗的影響需求處理是軟件工程的起始階段,設(shè)計(jì)、實(shí)現(xiàn)等后繼階段的正確性都以它的正確性為前提。如果在需求處理過程中有錯(cuò)誤未能解決,則其后的所有階段都會受到影響,因此與需求有關(guān)的錯(cuò)誤修復(fù)代價(jià)較高,需求問題對軟件成敗的影響較大。人們應(yīng)對需求分析階段的工作有足夠的認(rèn)識。StandishGroup在1995年報(bào)告中公布的導(dǎo)致項(xiàng)目成功或失敗的因素的相關(guān)數(shù)據(jù)如表4.1~表4.3所示。4.1.2需求問題的高代價(jià)性統(tǒng)計(jì)表明,在需求階段發(fā)生的錯(cuò)誤,如到了運(yùn)行維護(hù)階段才發(fā)現(xiàn),則在運(yùn)行維護(hù)階段進(jìn)行修復(fù)的代價(jià)可以高達(dá)需求階段修復(fù)代價(jià)的100~200倍(如圖4.1所示)。這種遞增效應(yīng)也說明了需求問題的高代價(jià)性。4.1.3常見的需求定義錯(cuò)誤在實(shí)踐和研究過程中,人們發(fā)現(xiàn)關(guān)于需求定義的錯(cuò)誤是需求工程中一類非常常見和重要的問題,具體的錯(cuò)誤主要有以下幾種:(1)需求并沒有反映用戶的真實(shí)需要。(2)模糊和歧義的需求。(3)信息遺漏。(4)不必要的需求。(5)不切實(shí)際的期望(UnrealisticExpectations)。2002年,Young也調(diào)查了常見的需求定義錯(cuò)誤,并進(jìn)行了分類,具體如圖4.2所示。4.1.4應(yīng)用領(lǐng)域知識對需求分析人員的重要性由于計(jì)算機(jī)的專業(yè)知識是用來服務(wù)于社會的各個(gè)應(yīng)用領(lǐng)域的,是要解決用戶工作中的實(shí)際問題的,因此,如何能正確理解用戶的實(shí)際需求僅有計(jì)算機(jī)專業(yè)知識是遠(yuǎn)遠(yuǎn)不夠的,還必須對相應(yīng)的應(yīng)用領(lǐng)域知識有所涉獵。為了啟發(fā)出客戶的要求,需求小組的成員必須熟悉該應(yīng)用領(lǐng)域,即熟悉目標(biāo)軟件產(chǎn)品通常在哪些領(lǐng)域使用。因此,每個(gè)需求分析組成員最初的任務(wù)就是熟悉應(yīng)用領(lǐng)域,除非需求分析組成員已經(jīng)在那個(gè)領(lǐng)域有過一些經(jīng)歷。當(dāng)與客戶和目標(biāo)軟件的潛在用戶交流時(shí),特別重要的一點(diǎn)是使用正確的術(shù)語。畢竟,這一點(diǎn)很難引起工作在某一特定領(lǐng)域的人的重視,除非訪談?wù)呤褂眠m于該領(lǐng)域的術(shù)語。更重要的是,使用不合適的術(shù)語會導(dǎo)致曲解,甚至?xí)桓兑粋€(gè)有錯(cuò)誤的軟件產(chǎn)品。如果需求小組的成員不理解該領(lǐng)域術(shù)語的細(xì)微差別,則可能會產(chǎn)生同樣的問題。專業(yè)的計(jì)算機(jī)人員希望在根據(jù)某一程序做決定前,每個(gè)程序的輸入由人工來仔細(xì)地檢查。但是對計(jì)算機(jī)越來越普遍的信任意味著依賴這類檢查的必然性顯然是不明智的。因此,對術(shù)語的誤解會造成軟件開發(fā)人員的疏忽,這不是危言聳聽。解決術(shù)語問題的一個(gè)辦法是建立一個(gè)術(shù)語表,術(shù)語表由該領(lǐng)域應(yīng)用的技術(shù)詞匯列表和對應(yīng)的解釋組成。當(dāng)小組成員正忙于盡可能學(xué)習(xí)應(yīng)用領(lǐng)域的相關(guān)知識時(shí),就將初始的詞條插入術(shù)語表中。然后,需求小組成員一遇到新的術(shù)語就將該術(shù)語表更新。適當(dāng)時(shí)還可打印出該術(shù)語表并分發(fā)給小組成員或下載到PDA(PersonalDigitalAssistant)。這樣的術(shù)語表不僅減少了客戶與開發(fā)者之間的誤解,而且對減少開發(fā)者之間的誤解也是很有必要的。一旦需求小組成員熟悉了該應(yīng)用領(lǐng)域后,下一步就是建立業(yè)務(wù)模型。4.2軟件需求的概念與層次4.2.1軟件需求的概念軟件需求是指用戶對軟件的功能和性能的要求,就是用戶希望軟件能做什么事情,完成什么樣的功能,達(dá)到什么樣的性能。軟件人員要準(zhǔn)確地理解用戶的要求,進(jìn)行細(xì)致的調(diào)查分析,將用戶非形式的需求陳述轉(zhuǎn)化為完整的需求定義,再由需求定義轉(zhuǎn)化為相應(yīng)形式的需求規(guī)格說明。對于軟件項(xiàng)目的需求,首先要理解用戶的要求,要澄清模糊的需求,與用戶達(dá)成共識。4.2.2需求的層次需求可分解為四個(gè)層次:業(yè)務(wù)需求、用戶需求、功能需求和非功能需求。業(yè)務(wù)需求反映了組織機(jī)構(gòu)或客戶對系統(tǒng)、產(chǎn)品高層次的目標(biāo)要求,由管理人員或市場分析人員確定。用戶需求描述了用戶通過使用本軟件產(chǎn)品必須要完成的任務(wù),一般是用戶協(xié)助提供。功能需求定義了開發(fā)人員必須實(shí)現(xiàn)的軟件功能,使得用戶通過使用此軟件能完成他們的任務(wù),從而滿足業(yè)務(wù)需求。對一個(gè)復(fù)雜產(chǎn)品來說,功能需求也許只是系統(tǒng)需求的一個(gè)子集。非功能需求是對功能需求的補(bǔ)充。它可分為兩類:一類是用戶關(guān)心的一些重要屬性,例如有效性、效率、靈活性、完整性、互操作性、可靠性、健壯性、可用性等。另一類是對開發(fā)者來說很重要的質(zhì)量屬性,例如可維護(hù)性、可移植性、可復(fù)用性、可測試性等。軟件需求各組成部分之間的關(guān)系如圖4.3所示。4.3獲取需求的目的和獲取需求常用的方法4.3.1獲取需求的目的需求獲取的目的是從項(xiàng)目的戰(zhàn)略規(guī)劃開始建立最初的原始需求。為此,它需要研究系統(tǒng)將來的應(yīng)用環(huán)境,確定系統(tǒng)的涉眾,了解現(xiàn)有的問題,建立新系統(tǒng)的目標(biāo),獲取為支持新系統(tǒng)目標(biāo)而需要的業(yè)務(wù)過程細(xì)節(jié)和具體的用戶需求。4.3.2獲取需求常用的方法需求分析是軟件開發(fā)中最重要的環(huán)節(jié),需求分析做得正確與否決定著軟件開發(fā)的成敗。要做好需求分析,最首要的是有正確的獲取需求的渠道和方法。常用的獲取需求的方法有訪談、問卷調(diào)查、情景分析、實(shí)地考察、構(gòu)造原型等。(1)訪談。訪談是最早開始使用的獲取用戶需求的方法,也是目前仍廣泛使用的需求分析技術(shù)。訪談?dòng)袃煞N基本形式,即正式訪談和非正式訪談。正式訪談時(shí),系統(tǒng)分析員將提出一些事先準(zhǔn)備好的具體問題。而非正式訪談中,分析員可提出一些用戶可以自由回答的開放性問題。采用訪談方式時(shí),分析員的主要任務(wù)是問題的設(shè)計(jì),包括探討功能、非功能、例外情況的問題,甚至是一些看起來似乎很“愚蠢”的問題。必須把所有的討論記錄下來,同時(shí)還要做一定的整理,并請參與討論的用戶評論并更正。(2)問卷調(diào)查。問卷調(diào)查即把需要調(diào)查的內(nèi)容制成表格交給用戶填寫。該方法在需要調(diào)查大量人員的意見時(shí),十分有效。此方法的優(yōu)點(diǎn)是用戶有較寬裕的考慮時(shí)間和回答時(shí)間。經(jīng)過仔細(xì)考慮寫出的書面回答可能比被訪者對問題的口頭回答更準(zhǔn)確,從而可以得到對提出的問題較為準(zhǔn)確細(xì)致的回答。分析員仔細(xì)閱讀收回的調(diào)查表,然后再有針對性地訪問一些用戶,以便向他們詢問在分析調(diào)查表時(shí)發(fā)現(xiàn)的新問題。采用問卷調(diào)查方法的關(guān)鍵是調(diào)查表的設(shè)計(jì)。在開發(fā)的早期用戶與開發(fā)者之間缺乏共同語言,用戶可能對表格中的內(nèi)容存在理解上的偏差。因此調(diào)查表的設(shè)計(jì)應(yīng)簡潔、易懂、易填寫,同時(shí)還要注意用戶的特點(diǎn)和調(diào)查的策略。(3)情景分析。所謂情景分析就是對目標(biāo)系統(tǒng)解決某個(gè)具體問題的方法和結(jié)果,給出可能的情景描述,以獲知用戶的具體需求。在訪談?dòng)脩舻倪^程中使用情景分析技術(shù)往往是非常有效的,該技術(shù)的優(yōu)點(diǎn)主要體現(xiàn)在下述兩個(gè)方面。①它能在某種程度上演示目標(biāo)系統(tǒng)的行為,便于用戶理解,從而進(jìn)一步揭示出一些分析員目前還不知道的需求。②需求分析的目標(biāo)是獲知用戶的真實(shí)需求,而這一信息的唯一來源是用戶。因此,讓用戶起積極主動(dòng)的作用對需求分析工作獲得成功是至關(guān)重要的。由于情景分析較易被用戶所理解,因此使得用戶在需求分析過程中能夠始終扮演一個(gè)積極主動(dòng)的角色。(4)實(shí)地考察。分析人員到用戶工作現(xiàn)場,實(shí)際觀察用戶的手工操作過程也是一種行之有效的獲取需求的方法。在實(shí)際觀察過程中,分析人員必須注意,系統(tǒng)開發(fā)的目標(biāo)不是手工操作過程的模擬,而是必須考慮最好的經(jīng)濟(jì)效益、最快的處理速度、最合理的操作流程、最友好的用戶界面等因素。因此,分析人員在接受用戶關(guān)于應(yīng)用問題及背景的知識的同時(shí),應(yīng)結(jié)合自己的軟件開發(fā)和軟件應(yīng)用經(jīng)驗(yàn),主動(dòng)地剔除不合理的、一些暫時(shí)行為的用戶需求,從系統(tǒng)角度改進(jìn)操作流程或規(guī)范,提出新的潛在的用戶需求。(5)構(gòu)造原型。在系統(tǒng)開發(fā)的早期,以對用戶所進(jìn)行的簡單需求分析為基礎(chǔ),快速建立目標(biāo)系統(tǒng)的原型。用戶可以通過原型進(jìn)行評估并提出修改意見,從而使用戶明確需求??焖僭头椒瓤舍槍φ麄€(gè)系統(tǒng),也可針對系統(tǒng)的某部分功能。4.3獲取需求的目的和獲取需求常用的方法軟件需求分析的目標(biāo)是深入描述軟件的功能和性能,確定軟件設(shè)計(jì)的約束和軟件同其他系統(tǒng)元素的接口細(xì)節(jié),定義軟件的其他有效性需求。需求分析階段研究的對象是軟件項(xiàng)目的用戶要求。一方面,必須全面理解用戶的各項(xiàng)要求,但又不能全盤接受所有的要求;另一方面,要準(zhǔn)確地表達(dá)被接受的用戶要求。只有經(jīng)過確切描述的軟件需求才能成為軟件設(shè)計(jì)的基礎(chǔ)。通常軟件開發(fā)項(xiàng)目是要實(shí)現(xiàn)目標(biāo)系統(tǒng)的物理模型。作為目標(biāo)系統(tǒng)的參考,需求分析的任務(wù)就是借助于當(dāng)前系統(tǒng)的邏輯模型導(dǎo)出目標(biāo)系統(tǒng)的邏輯模型,解決目標(biāo)系統(tǒng)“做什么”的問題。其實(shí)現(xiàn)步驟如圖4.4所示。需求分析階段所要完成的任務(wù)并不是如何去編制程序,做具體的工作,而是要確定系統(tǒng)必須完成哪些工作,實(shí)現(xiàn)哪些功能,也就是對目標(biāo)系統(tǒng)提出完整、準(zhǔn)確、具體、清晰的要求。即以軟件計(jì)劃階段的軟件工作范圍為指南,通過分析綜合建立分析模型,編制出軟件需求規(guī)格說明書。需求分析階段的具體任務(wù)如下:(1)確定對系統(tǒng)的綜合要求,具體要求如下:①系統(tǒng)界面要求,描述軟件系統(tǒng)的外部特性,即系統(tǒng)從外部輸入哪些數(shù)據(jù),又向外部輸出哪些數(shù)據(jù);②系統(tǒng)功能要求,列出軟件系統(tǒng)必須完成的所有功能;③系統(tǒng)性能要求,如響應(yīng)時(shí)間、吞吐量、處理時(shí)間、對主存和外存的限制等;④安全性、保密性和可靠性要求;⑤系統(tǒng)的運(yùn)行要求,如對硬件、支持軟件、數(shù)據(jù)通信接口等的要求;⑥異常處理要求,在運(yùn)行過程中出現(xiàn)異常情況(如臨時(shí)性或永久性的資源故障、不合法或超出范圍的輸入數(shù)據(jù)、非法操作、數(shù)組越界等)時(shí)應(yīng)采取的行動(dòng)以及希望顯示的信息;⑦將來可能提出的要求,應(yīng)該明確地列出那些雖然不屬于當(dāng)前系統(tǒng)開發(fā)范疇,但是據(jù)分析將來可能會提出來的要求,其目的是為將來可能的擴(kuò)充和修改做準(zhǔn)備,便于需要時(shí)較容易地進(jìn)行這種擴(kuò)充和修改。(2)分析系統(tǒng)的數(shù)據(jù)要求。任何一個(gè)軟件從本質(zhì)上來說都是信息處理系統(tǒng),必然要與各種數(shù)據(jù)打交道。系統(tǒng)的數(shù)據(jù)要求包括基本數(shù)據(jù)元素,數(shù)據(jù)元素之間的邏輯關(guān)系、數(shù)據(jù)量、峰值等。常用的數(shù)據(jù)描述手段是實(shí)體-關(guān)系模型。(3)導(dǎo)出系統(tǒng)的邏輯模型。根據(jù)以上分析可導(dǎo)出詳細(xì)的邏輯模型。在結(jié)構(gòu)化分析方法中常用數(shù)據(jù)流圖來描述。(4)修正項(xiàng)目開發(fā)計(jì)劃。在明確了用戶的真正需求后,可以更準(zhǔn)確地估算軟件的成本和進(jìn)度,從而對以前提出的軟件項(xiàng)目計(jì)劃進(jìn)行必要的修正。(5)開發(fā)原型系統(tǒng)。對一些需求不夠明確的軟件,可以先開發(fā)一個(gè)原型系統(tǒng),以驗(yàn)證用戶的需求。目前已有一些較好的工具可供快速建立軟件的原型系統(tǒng)使用,這就為在軟件開發(fā)中采用樣機(jī)策略奠定了必要的物質(zhì)基礎(chǔ)。原型法近年來已逐漸發(fā)展成為開發(fā)軟件的一種重要方法。4.5需求分析的過程需求分析階段的工作,可以分成問題識別、分析與綜合、編制需求分析階段的文檔、需求分析評審4個(gè)方面。具體的分析流程如圖4.5所示。4.6需求分析的原則目前,軟件需求分析的方法有很多,雖然各種方法都有其獨(dú)特的描述方法,
但這些方法都有它們共同適用的基本原則。
(1)必須能夠表達(dá)和理解問題的數(shù)據(jù)域和功能域。所有軟件定義與開發(fā)工作最終是為了解決數(shù)據(jù)處理問題,就是將一種形式的數(shù)據(jù)轉(zhuǎn)換成另一種形式的數(shù)據(jù)。其轉(zhuǎn)換過程必定經(jīng)歷輸入數(shù)據(jù)、加工數(shù)據(jù)和產(chǎn)生結(jié)果數(shù)據(jù)等步驟。
對于計(jì)算機(jī)程序處理的數(shù)據(jù),其數(shù)據(jù)域應(yīng)包括數(shù)據(jù)流、數(shù)據(jù)內(nèi)容和數(shù)據(jù)結(jié)構(gòu)。
數(shù)據(jù)流即數(shù)據(jù)通過一個(gè)系統(tǒng)時(shí)的變化方式。輸入數(shù)據(jù)首先轉(zhuǎn)換成中間數(shù)據(jù),
然后轉(zhuǎn)換成輸出結(jié)果數(shù)據(jù)。在此期間可以從已有的數(shù)據(jù)存儲(如磁盤文件或內(nèi)存緩沖區(qū))中引入附加數(shù)據(jù)。對數(shù)據(jù)進(jìn)行轉(zhuǎn)換是程序中應(yīng)有的功能或子功能。兩個(gè)轉(zhuǎn)換功能之間的數(shù)據(jù)傳遞就確定了功能間的接口。
數(shù)據(jù)內(nèi)容即數(shù)據(jù)項(xiàng)。例如,學(xué)生名冊包含了班級、人數(shù)、每個(gè)學(xué)生的學(xué)號、姓名、性別、各科成績等。學(xué)生名冊的內(nèi)容由它所包含的項(xiàng)定義。為了理解對學(xué)生名冊的處理,必須要理解它的數(shù)據(jù)內(nèi)容。
數(shù)據(jù)結(jié)構(gòu)即各種數(shù)據(jù)項(xiàng)的邏輯組織。數(shù)據(jù)是組織成表格,還是組織成有層次的樹型結(jié)構(gòu)?在結(jié)構(gòu)中數(shù)據(jù)項(xiàng)與其他哪些數(shù)據(jù)項(xiàng)相關(guān)?所有數(shù)據(jù)是在一個(gè)數(shù)據(jù)結(jié)構(gòu)中,還是在幾個(gè)數(shù)據(jù)結(jié)構(gòu)中?一個(gè)結(jié)構(gòu)中的數(shù)據(jù)與其他結(jié)構(gòu)中的數(shù)據(jù)如何聯(lián)系?這些問題都由數(shù)據(jù)結(jié)構(gòu)分析來解決。
(2)必須按自頂向下、逐層分解的方式對問題進(jìn)行分解和不斷細(xì)化。通常如果將軟件要處理的問題作為一個(gè)整體來看,則會顯得太大、太復(fù)雜、很難理解??梢园褑栴}以某種方式分解為幾個(gè)較易理解的部分,并確定各部分間的接口,從而實(shí)現(xiàn)整體功能。
在需求分析階段,軟件的功能域和信息域都能做進(jìn)一步的分解。這種分解可以是同一層次上的,稱為橫向分解;也可以是多層次的縱向分解。例如,把一個(gè)功能分解成幾個(gè)子功能,并確定這些子功能與父功能的接口,就屬于橫向分解。但如果繼續(xù)分解,把某些子功能又分解為小的子功能,某個(gè)小的子功能又分解為更小的子功能,則屬于縱向分解。
(3)要給出系統(tǒng)的邏輯視圖和物理視圖。
給出系統(tǒng)的邏輯視圖(邏輯模型)和物理視圖(物理模型),這對系統(tǒng)滿足處理需求所提出的邏輯限制條件和系統(tǒng)中其他成分提出的物理限制條件是必不可少的。軟件需求的邏輯視圖給出軟件要達(dá)到的功能和將要處理數(shù)據(jù)之間的關(guān)系,而不是實(shí)現(xiàn)的細(xì)節(jié)。例如,一個(gè)學(xué)校的教材處理系統(tǒng)要從學(xué)生那里獲取訂單,系統(tǒng)讀取訂單的功能并不關(guān)心訂單數(shù)據(jù)的物理形式和用什么設(shè)備讀入,也就是說無須關(guān)心輸入的機(jī)制,只是讀取顧客的訂單而已。類似地,系統(tǒng)中檢查庫存的功能只關(guān)心庫存文件的數(shù)據(jù)結(jié)構(gòu),而不關(guān)心庫存文件在計(jì)算機(jī)中的具體存儲方式。軟件需求的邏輯描述是軟件設(shè)計(jì)的基礎(chǔ)。
軟件需求的物理視圖給出處理功能和數(shù)據(jù)結(jié)構(gòu)的實(shí)際表示形式,這往往是由設(shè)備決定的。如一些軟件靠終端鍵盤輸入數(shù)據(jù),另一些軟件靠模-數(shù)轉(zhuǎn)換設(shè)備提供數(shù)據(jù)。分析員必須弄清系統(tǒng)元素對軟件的限制,并考慮功能和信息結(jié)構(gòu)的物理表示。4.7需求分析階段常見的問題及需求分析的技巧4.7.1需求分析階段常見的問題捕捉真正的需求是困難的。需求分析中最具有挑戰(zhàn)性的問題是如何捕獲真正的需求,如圖4.6所示。對需求的誤解將會直接影響著后期的開發(fā)工作,一旦需求分析中出現(xiàn)了漏洞或偏差,將會導(dǎo)致較大的風(fēng)險(xiǎn)。一些國外企業(yè)的業(yè)務(wù)較規(guī)范,需求很清楚,但國內(nèi)企業(yè)或組織往往不能清楚地描述自己的需求,造成軟件項(xiàng)目管理的難度加大,甚至項(xiàng)目失敗。4.7.2軟件需求分析技巧在實(shí)際應(yīng)用中,進(jìn)行需求分析需要一些技巧,主要包括如下幾項(xiàng):(1)需求分析是分析師與用戶雙方進(jìn)行配合的項(xiàng)目,需要密切交流合作。(2)在微觀上/宏觀上都應(yīng)以流程為主。(3)注重事實(shí),堅(jiān)持客觀調(diào)研及主見,不應(yīng)偏聽偏信。(4)構(gòu)建需求金字塔。決策層提出宏觀上的統(tǒng)計(jì)、查詢、決策需求,管理層提出業(yè)務(wù)管理和作業(yè)控制需求,操作層提出錄入、修改、提交、處理、打印、界面、傳輸、通信、時(shí)間、速度等方面的操作需求。(5)注重主動(dòng)征求各層次的意見和建議,一般需求分析過程需要集中匯報(bào)征求意見2次或3次。4.8需求分析的方法4.8.1結(jié)構(gòu)化分析方法結(jié)構(gòu)化分析(StructuredAnalysis,SA)是面向數(shù)據(jù)流進(jìn)行需求分析的方法。結(jié)構(gòu)化分析方法適合于數(shù)據(jù)處理類型軟件的需求分析。由于結(jié)構(gòu)化分析方法利用圖形來表達(dá)需求,因此顯得清晰、簡明,易于學(xué)習(xí)和掌握。具體來說,結(jié)構(gòu)化分析方法就是用抽象模型的概念,按照軟件內(nèi)部數(shù)據(jù)傳遞、變換的關(guān)系,自頂向下逐層分解,直到找到滿足功能要求的所有可實(shí)現(xiàn)的軟件為止。在問題域中,一個(gè)龐大而又復(fù)雜的問題在整體上往往很難被完全理解,為此,人們常常把一個(gè)復(fù)雜問題分解成若干個(gè)子問題,如果問題被分解后,還不足以被理解,則又把子問題再進(jìn)一步分解,直到問題能被完全理解為止。在軟件工程中,大型軟件往往非常復(fù)雜,控制軟件復(fù)雜性的基本手段是“分解”。SA方法正是把軟件系統(tǒng)自上向下逐層分解、逐步細(xì)化的一種方法,它能較好地控制系統(tǒng)的復(fù)雜性,按照這種方法,無論系統(tǒng)有多么大,總可以有計(jì)劃地把它分解為足夠小的子問題。即隨著系統(tǒng)的增大,分析工作的復(fù)雜程度并不會增大,只是工作量增大而已。簡單地說,復(fù)雜性不會隨系統(tǒng)的增大而增大。結(jié)構(gòu)化分析方法主要使用以下幾種工具:數(shù)據(jù)流圖、數(shù)據(jù)詞典、結(jié)構(gòu)化英語、判定表和判定樹。1.數(shù)據(jù)流圖SA方法使用數(shù)據(jù)流圖從數(shù)據(jù)傳遞和加工的角度,以圖形的方式刻畫數(shù)據(jù)流從輸入到輸出的傳輸變換過程。數(shù)據(jù)流圖是結(jié)構(gòu)化系統(tǒng)分析的主要工具,它表示了系統(tǒng)內(nèi)部信息的流向,并表示了系統(tǒng)的邏輯處理的功能,是一種功能模型。數(shù)據(jù)流圖(DataFlowDiagram,DFD)的基本圖形元素有4種,如圖4.8所示。在數(shù)據(jù)流圖中,如果有兩個(gè)以上的數(shù)據(jù)流指向一個(gè)加工,或是從一個(gè)加工中引出兩個(gè)以上的數(shù)據(jù)流,則這些數(shù)據(jù)流之間往往存在一定的關(guān)系。為表達(dá)這些關(guān)系,可以在這些數(shù)據(jù)流的加工處標(biāo)上不同的標(biāo)記符號。所用符號及其含意在圖4.9中給出。為了表達(dá)數(shù)據(jù)處理過程的數(shù)據(jù)加工情況,用一個(gè)數(shù)據(jù)流圖是不夠的。稍微復(fù)雜的實(shí)際問題,在數(shù)據(jù)流圖上常常出現(xiàn)十幾個(gè)甚至幾十個(gè)加工。這樣的數(shù)據(jù)流圖看起來很不清楚。層次結(jié)構(gòu)的數(shù)據(jù)流圖能很好地解決這一問題。按照系統(tǒng)的層次結(jié)構(gòu)進(jìn)行逐步分解,并以分層的數(shù)據(jù)流圖反映這種結(jié)構(gòu)關(guān)系,能清楚地表達(dá)和容易理解整個(gè)系統(tǒng)。(1)分層的數(shù)據(jù)流圖。先把整個(gè)數(shù)據(jù)處理過程暫且看成一個(gè)加工,它的輸入數(shù)據(jù)和輸出數(shù)據(jù)實(shí)際上反映了系統(tǒng)與外界環(huán)境的接口。這就是分層數(shù)據(jù)流圖的頂層。但僅此一圖并未表明數(shù)據(jù)的加工要求,需要進(jìn)一步細(xì)化。圖4.10給出分層數(shù)據(jù)流圖的示例。畫數(shù)據(jù)流圖的基本步驟概括地說,就是自外向內(nèi),自頂向下,逐層細(xì)化,完善求精。檢查和修改的原則如下:①數(shù)據(jù)流圖上所有圖形符號只限于前述四種基本圖形元素。②頂層數(shù)據(jù)流圖必須包括前述四種基本元素,缺一不可。③頂層數(shù)據(jù)流圖上的數(shù)據(jù)流必須封閉在外部實(shí)體之間。④每個(gè)加工至少有一個(gè)輸入數(shù)據(jù)流和一個(gè)輸出數(shù)據(jù)流。⑤在數(shù)據(jù)流圖中,需按層給加工框編號。編號表明該加工處在哪一層,以及上下層的父圖與子圖的對應(yīng)關(guān)系。⑥規(guī)定任何一個(gè)數(shù)據(jù)流子圖必須與它上一層的一個(gè)加工對應(yīng),兩者的輸入數(shù)據(jù)流和輸出數(shù)據(jù)流必須一致。此即父圖與子圖的平衡。⑦可以在數(shù)據(jù)流圖中加入物質(zhì)流,以幫助用戶理解數(shù)據(jù)流圖。⑧圖上每個(gè)元素都必須有名字。數(shù)據(jù)流和數(shù)據(jù)文件的名字應(yīng)當(dāng)是“名詞”或“名詞性短語”,表明流動(dòng)的數(shù)據(jù)是什么。加工的名字應(yīng)當(dāng)是“名詞?+?賓語”,表明做什么事情。⑨數(shù)據(jù)流圖中不可夾帶控制流。⑩初畫時(shí)可以忽略瑣碎的細(xì)節(jié),以集中精力于主要數(shù)據(jù)流。(2)加工規(guī)格說明。加工規(guī)格說明用來說明DFD中的數(shù)據(jù)加工的加工細(xì)節(jié)。加工規(guī)格說明描述了數(shù)據(jù)加工的輸入,實(shí)現(xiàn)加工的算法以及產(chǎn)生的輸出。另外,加工規(guī)格說明指明了加工(功能)的約束和限制,與加工相關(guān)的性能要求,以及影響加工的實(shí)現(xiàn)方式的設(shè)計(jì)約束。必須注意,書寫加工規(guī)格說明的主要目的是要表達(dá)“做什么”,而不是“怎樣做”。因此它應(yīng)描述數(shù)據(jù)加工實(shí)現(xiàn)加工的策略而不是實(shí)現(xiàn)加工的細(xì)節(jié)。2.數(shù)據(jù)詞典分析模型中包含了對數(shù)據(jù)對象、功能和控制的表示。在每一種表示中,數(shù)據(jù)對象和控制項(xiàng)都扮演一定的角色。為表示每個(gè)數(shù)據(jù)對象和控制項(xiàng)的特性,建立了數(shù)據(jù)詞典。數(shù)據(jù)詞典精確地、嚴(yán)格地定義了每一個(gè)與系統(tǒng)相關(guān)的數(shù)據(jù)元素,并以字典式順序?qū)⑺鼈兘M織起來,使得用戶和分析員對所有的輸入、輸出、存儲成分和中間計(jì)算有共同的理解。詞條描述及內(nèi)容描述方法如下所述:(1)詞條描述。在數(shù)據(jù)詞典的每一個(gè)詞條中應(yīng)包含以下信息:①名稱:數(shù)據(jù)對象或控制項(xiàng)、數(shù)據(jù)存儲或外部實(shí)體的名字。②別名或編號。③分類:包括數(shù)據(jù)對象、加工、數(shù)據(jù)流、數(shù)據(jù)文件、外部實(shí)體、控制項(xiàng)(事件∕狀態(tài))。④描述:描述內(nèi)容或數(shù)據(jù)結(jié)構(gòu)等。⑤何處使用:使用該詞條(數(shù)據(jù)或控制項(xiàng))的加工。(2)內(nèi)容描述。在數(shù)據(jù)詞典的編制中,分析員最常用的描述內(nèi)容或數(shù)據(jù)結(jié)構(gòu)的符號如表4.4所示。數(shù)據(jù)流及數(shù)據(jù)存儲的表示方法如下:①數(shù)據(jù)流表示。采用自上而下、逐層分解的方式對每一條數(shù)據(jù)流進(jìn)行定義。在數(shù)據(jù)流的定義式中,通常采用下述符號(以大學(xué)教務(wù)管理中的成績管理子系統(tǒng)問題數(shù)據(jù)流圖中的數(shù)據(jù)流的定義為例):(D01)學(xué)號?=?入學(xué)年份?+?專業(yè)編號?+?班級編號?+?序號(D02)成績單編號?=?學(xué)年?+?課程編號?+?班級編號(d01.1)學(xué)號?=?"00000001".."99999999"(d01.2)密碼?=?"000001".."999999"(d02.2)課程號?=?1{"英文字母"}4?+?"0001".."9999"②數(shù)據(jù)存儲表示。有兩種類型的數(shù)據(jù)存儲,一種是文件形式,另一種是數(shù)據(jù)庫形式。對于文件形式,其定義包括定義文件的組成數(shù)據(jù)項(xiàng)和文件的組織方式兩項(xiàng)內(nèi)容,其中文件組成數(shù)據(jù)項(xiàng)的定義方式與數(shù)據(jù)流的定義方式相同。3.結(jié)構(gòu)化語言結(jié)構(gòu)化語言是一種介于自然語言和形式化語言之間的半形式化語言,它是在自然語言的基礎(chǔ)上加入了一定的限制,通過使用有限的詞匯和有限的語句來較為嚴(yán)格地描述加工邏輯。描述加工邏輯時(shí)可以使用的詞匯包括:數(shù)據(jù)字典中定義的名字、基本控制結(jié)構(gòu)中的關(guān)鍵詞、自然語言中具有明確意義的動(dòng)詞、少量的自定義詞匯等。盡量不使用形容詞或副詞,可以使用一些簡單的算術(shù)或邏輯運(yùn)算符。結(jié)構(gòu)化語言中的三種基本結(jié)構(gòu)的描述方法如下:(1)順序結(jié)構(gòu):由自然語言中的簡單祈使語句序列構(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)。4.判定表判定表用于描述一些結(jié)構(gòu)化語言不易表達(dá)清楚的加工邏輯,這種表達(dá)方式簡單明了,如圖4.14所示。5.判定樹判定樹以圖形的方式描述加工邏輯,它結(jié)構(gòu)簡單,易讀易懂。加工邏輯可以用結(jié)構(gòu)化語言、判定表、判定樹等多種形式表示,也可將它們結(jié)合起來表示。4.8.2原型分析方法傳統(tǒng)的軟件工程方法強(qiáng)調(diào)自頂向下分階段開發(fā),要求在進(jìn)入實(shí)際開發(fā)期之前必須預(yù)先對需求嚴(yán)格定義。但實(shí)踐表明,在系統(tǒng)建立起來之前很難僅僅依靠分析就確定出一套完整、一致、有效的應(yīng)用需求,并且這種預(yù)先定義的策略更不能適應(yīng)用戶需求不斷變化的情況。由此,原型分析法應(yīng)運(yùn)而生,它一反傳統(tǒng)的自頂向下的開發(fā)模式,是目前較流行的開發(fā)模式。1.原型的概念原型最早使用在制造業(yè)和機(jī)械產(chǎn)品設(shè)計(jì)中,先做出產(chǎn)品的基本模型,然后進(jìn)行完善和改進(jìn),最后得到符合要求的產(chǎn)品。在軟件工程中,原型是指要開發(fā)的軟件系統(tǒng)的原始模型,是一個(gè)軟件早期的可運(yùn)行的版本,它反映最終系統(tǒng)的某些重要特性(如軟件界面與布局、功能等)。在獲得一組最基本的需求說明后,通過分析構(gòu)造出一個(gè)小型的簡約軟件系統(tǒng),滿足用戶的基本要求,然后不斷演化得到較高質(zhì)量的產(chǎn)品。原型法克服了傳統(tǒng)軟件生命周期法的一些弊端,具有快速靈活、交互式等特點(diǎn),方法的核心是用交互、快速建立起來的原型取代了不太明確的需求規(guī)格說明,用戶通過在計(jì)算機(jī)上實(shí)際運(yùn)行和試用原型系統(tǒng)得到親身感受并受到啟發(fā),通過反應(yīng)和評價(jià)向開發(fā)者提供真實(shí)的反饋意見。然后開發(fā)者根據(jù)用戶的意見對原型加以改進(jìn),通過“原型構(gòu)造—試用運(yùn)行—評價(jià)反饋—分析修改”的多次反復(fù),從而提高最終產(chǎn)品的質(zhì)量。圖4.16是原型生存期的圖示。原型分析方法的具體實(shí)現(xiàn)步驟如下:(1)快速分析:在分析者和用戶的緊密配合下,快速確定軟件系統(tǒng)的基本要求。(2)構(gòu)造原型:在快速分析基礎(chǔ)上,根據(jù)基本需求,盡快實(shí)現(xiàn)一個(gè)可運(yùn)行的系統(tǒng)。(3)運(yùn)行和評價(jià)原型:用戶在開發(fā)者指導(dǎo)下試用原型,在試用的過程中考核評價(jià)原型的特性,分析其運(yùn)行結(jié)果是否滿足規(guī)格說明的要求,以及規(guī)格說明描述是否滿足用戶愿望。(4)修正和改進(jìn):根據(jù)修改意見進(jìn)行修改。如果用修改原型的過程代替快速分析,就形成了原型開發(fā)的迭代過程。開發(fā)者和用戶在一次次的迭代過程中不斷將原型完善,以接近系統(tǒng)的最終要求。(5)判定原型完成:如果經(jīng)過修改或改進(jìn)的原型,得到參與者一致的認(rèn)可,則原型開發(fā)的迭代過程可以結(jié)束。為此,應(yīng)判斷是否已經(jīng)掌握有關(guān)應(yīng)用的實(shí)質(zhì),是否可以結(jié)束迭代周期等。判定的結(jié)果有兩個(gè)不同的轉(zhuǎn)向,一是繼續(xù)迭代驗(yàn)證,二是進(jìn)行詳細(xì)說明。(6)判斷原型細(xì)部是否說明:判斷組成原型的細(xì)部是否需要嚴(yán)格地加以說明。原型化方法允許對系統(tǒng)必要成分或不能通過模型進(jìn)行說明的成分進(jìn)行嚴(yán)格的詳細(xì)的說明。(7)原型細(xì)部的說明:對于那些不能通過原型說明的項(xiàng)目,仍需通過文件加以說明。嚴(yán)格說明的成分要作為原型化方法的模型編入詞典。(8)判定原型效果:考察用戶新加入的需求信息和細(xì)部說明信息,看其對模型效果有什么影響?是否會影響模塊的有效性?如果模型效果受到影響,甚至導(dǎo)致模型失效,則要進(jìn)行修正和改進(jìn)。(9)整理原型和提供文檔??傊?,利用原型化技術(shù),可為軟件的開發(fā)提供一種完整的、靈活的、近似動(dòng)態(tài)的規(guī)格說明方法。2.原型的類型由于建立原型的目的不同,因此實(shí)現(xiàn)原型的途徑也有所不同,通常有以下三種類型:(1)探索型。這種原型目的是要弄清客戶對目標(biāo)系統(tǒng)的要求,確定所希望的特性,并探討多種方案的可行性。(2)實(shí)驗(yàn)型。這種原型用于大規(guī)模開發(fā)和實(shí)現(xiàn)之前,考核方案是否合適,規(guī)格說明是否可靠。(3)進(jìn)化型。這種原型的目的不在于改進(jìn)規(guī)格說明,而是將系統(tǒng)建造得容易處理變化,在改進(jìn)原型的過程中,逐步將原型進(jìn)化成最終系統(tǒng)。它將原型方法的思想擴(kuò)展到軟件開發(fā)的全過程,適于滿足需求的變動(dòng)。由于運(yùn)用原型的目的和方式不同,因此在使用原型時(shí)可采取以下兩種不同的策略:(1)廢棄策略。先構(gòu)造一個(gè)功能簡單而且質(zhì)量要求不高的模型系統(tǒng),針對這個(gè)模型系統(tǒng)反復(fù)進(jìn)行分析修改,形成比較好的設(shè)計(jì)思想,據(jù)此設(shè)計(jì)出較完整、準(zhǔn)確、一致、可靠的最終系統(tǒng)。系統(tǒng)構(gòu)造完成后,原來的模型系統(tǒng)就被廢棄。探索型和實(shí)驗(yàn)型屬于這種策略。(2)追加策略。先構(gòu)造一個(gè)功能簡單而且質(zhì)量要求不高的模型系統(tǒng),并將其作為最終系統(tǒng)的核心,然后通過不斷地?cái)U(kuò)充修改,逐步追加新要求,最后發(fā)展成為最終系統(tǒng)。進(jìn)化型屬于這種策略。采用什么形式、什么策略主要取決于軟件項(xiàng)目的特點(diǎn)和開發(fā)者的素質(zhì),以及支持原型開發(fā)的工具和技術(shù)。要根據(jù)實(shí)際情況的特點(diǎn)加以決策。3.原型分析方法的優(yōu)點(diǎn)原型分析方法有以下優(yōu)點(diǎn):(1)增進(jìn)軟件開發(fā)者和用戶對需求的理解,使比較含糊的具有不確定性的軟件需求(主要的功能性的需求)明確化。(2)軟件原型化方法提供了一種有力的學(xué)習(xí)手段。(3)使用原型化方法,可以容易地確定系統(tǒng)的性能,確認(rèn)系統(tǒng)主要服務(wù)的可應(yīng)用性,確認(rèn)系統(tǒng)設(shè)計(jì)的可行性,確認(rèn)系統(tǒng)最終作為產(chǎn)品。(4)軟件原型的最終版本,有的可以原封不動(dòng)地稱為產(chǎn)品,有的略加修改就可以成為最終系統(tǒng)的一個(gè)組成部分,這樣有利于建成最終系統(tǒng)。4.原型建立技術(shù)原型建立技術(shù)有以下幾種:(1)可執(zhí)行規(guī)格說明。它是基于需求規(guī)格說明的一種自動(dòng)化技術(shù),使用這種方法,人們可以直接觀察用語言規(guī)定的任何系統(tǒng)的功能和行為。(2)基于腳本的設(shè)計(jì)。腳本是用戶界面的原型。一個(gè)腳本用來模擬在系統(tǒng)運(yùn)行期間用戶經(jīng)歷的事件。它提供了輸入—處理—輸出的屏幕格式和有關(guān)對話的模型。因此,軟件開發(fā)者能夠給用戶顯示系統(tǒng)的逼真的視圖,使用戶得以判斷是否符合他的意圖。(3)自動(dòng)程序設(shè)計(jì)在程序自動(dòng)生成環(huán)境的支持下,利用計(jì)算機(jī)實(shí)現(xiàn)軟件的開發(fā)。它可以自動(dòng)地或半自動(dòng)地把用戶的非過程式問題規(guī)格說明轉(zhuǎn)換為某種高級語言程序。(4)專用語言。它是應(yīng)用領(lǐng)域的模型化語言。在原型開發(fā)中使用專用語言,可方便用戶和軟件開發(fā)者對系統(tǒng)特性進(jìn)行交流。(5)可復(fù)用的軟件。它是利用可復(fù)用的模塊,通過適當(dāng)?shù)慕M合,構(gòu)造的原型系統(tǒng)。為了快速地構(gòu)造原型,這些模塊首先必須有簡單而清晰的界面;其次它們應(yīng)當(dāng)盡量不依賴其他的模塊或數(shù)據(jù)結(jié)構(gòu);最后,它們應(yīng)具有一些通用的功能。(6)簡化假設(shè)。它使設(shè)計(jì)者迅速得到一個(gè)簡化的系統(tǒng)。盡管這些假設(shè)可能實(shí)際上并不能成立,但它們可以使開發(fā)者的注意力集中在一些主要的方面。在修改一個(gè)文件時(shí),可以假設(shè)這個(gè)文件確實(shí)存在。在存取文件時(shí),待存取的記錄總是存在。一旦計(jì)劃中的系統(tǒng)滿足用戶所有的要求,就可以撤消這些假設(shè),并追加一些細(xì)節(jié)。4.9軟件需求分析文檔4.9.1軟件需求規(guī)格說明和需求評審1.制定軟件需求規(guī)格說明的原則1979年由Balzer和Goldman提出了做出良好規(guī)格說明的8條原則。原則1:功能與實(shí)現(xiàn)分離,即描述要“做什么”而不是“怎樣實(shí)現(xiàn)”。原則?2:要求使用面向處理的規(guī)格說明語言,討論來自環(huán)境的各種刺激可能導(dǎo)致系統(tǒng)做出什么樣的功能性反應(yīng),來定義一個(gè)行為模型,從而得到“做什么”的規(guī)格說明。原則?3:如果目標(biāo)軟件只是一個(gè)大系統(tǒng)中的一個(gè)元素,那么整個(gè)大系統(tǒng)也包括在規(guī)格說明的描述之中,描述該目標(biāo)軟件與系統(tǒng)的其他系統(tǒng)元素交互的方式。原則4:規(guī)格說明必須包括系統(tǒng)運(yùn)行的環(huán)境。原則5:系統(tǒng)規(guī)格說明必須是一個(gè)認(rèn)識的模型,而不是設(shè)計(jì)或?qū)崿F(xiàn)的模型。原則?6:規(guī)格說明必須是可操作的。規(guī)格說明必須是充分完
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年電子商務(wù)平臺技術(shù)轉(zhuǎn)讓合同
- 2024版衛(wèi)星導(dǎo)航技術(shù)服務(wù)合同
- 二零二五年度個(gè)人收入證明與家族信托設(shè)立合同3篇
- 網(wǎng)上課程設(shè)計(jì)詐騙
- 2024年度供應(yīng)鏈擔(dān)保簽字最長期限合作協(xié)議3篇
- 2025年度特色水果種植基地加盟合作合同范本3篇
- 2024-2029年中國在線閱讀行業(yè)發(fā)展監(jiān)測及市場發(fā)展?jié)摿︻A(yù)測報(bào)告
- 2025年鹽酸環(huán)丙沙星項(xiàng)目可行性研究報(bào)告
- 二零二五年度口腔醫(yī)療行業(yè)資深醫(yī)生長期合作協(xié)議3篇
- 2025年中國泌尿系統(tǒng)用藥行業(yè)市場全景評估及投資前景展望報(bào)告
- 中小學(xué)學(xué)校安全管理制度匯編
- DB21∕T 3240-2020 芹菜農(nóng)藥安全使用生產(chǎn)技術(shù)規(guī)程
- 2024年全國《考評員》專業(yè)技能鑒定考試題庫與答案
- 廣州滬教牛津版七年級英語上冊期中試卷(含答案)
- 2025版國家開放大學(xué)法律事務(wù)??啤睹穹▽W(xué)(1)》期末考試總題庫
- 幼兒心理健康的教育課件
- 冷凍設(shè)備租賃合同
- DB43T 1167-2016 高純(SiO ≥99.997%)石英砂 規(guī)范
- 《環(huán)境保護(hù)產(chǎn)品技術(shù)要求 工業(yè)廢氣吸附凈化裝置》HJT 386-2007
- 化工過程安全管理導(dǎo)則學(xué)習(xí)考試題及答案
- 銀行下半年對公業(yè)務(wù)工作計(jì)劃(13篇)
評論
0/150
提交評論