03、結(jié)構(gòu)化分析_第1頁
03、結(jié)構(gòu)化分析_第2頁
03、結(jié)構(gòu)化分析_第3頁
03、結(jié)構(gòu)化分析_第4頁
03、結(jié)構(gòu)化分析_第5頁
已閱讀5頁,還剩109頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、第三部分、結(jié)構(gòu)化分析可行性研究的任務(wù)1可行性研究過程2需求分析的任務(wù)3需求分析的過程4與用戶溝通的方法5分析建模與規(guī)格說明6驗(yàn)證軟件需求7系統(tǒng)流程圖8實(shí)體-聯(lián)系圖9數(shù) 據(jù) 流 圖10數(shù) 據(jù) 字 典11其他圖形工具12成本效益分析13結(jié)構(gòu)化分析實(shí)例14 傳統(tǒng)的軟件工程方法學(xué)采用結(jié)構(gòu)化分析技術(shù)完成系統(tǒng)分析(問題定義、可行性研究、需求分析)的任務(wù)。 所謂“結(jié)構(gòu)化”,就是用一組標(biāo)準(zhǔn)的準(zhǔn)則和工具來完成某項(xiàng)工作。具體說到結(jié)構(gòu)化分析,它主要有以下幾個(gè)要點(diǎn): 采用自頂向下功能分解的方法;采用自頂向下功能分解的方法; 強(qiáng)調(diào)邏輯功能而不是實(shí)現(xiàn)功能的具體方法;強(qiáng)調(diào)邏輯功能而不是實(shí)現(xiàn)功能的具體方法; 使用圖形表達(dá)系統(tǒng)

2、分析的結(jié)果。使用圖形表達(dá)系統(tǒng)分析的結(jié)果。1 問題定義 本階段任務(wù):在短時(shí)間內(nèi)對客戶的需求有比較準(zhǔn)確的估計(jì):軟件的目標(biāo)、規(guī)模要點(diǎn):要點(diǎn): 哪些內(nèi)容不需要實(shí)現(xiàn),劃清項(xiàng)目的范圍哪些內(nèi)容不需要實(shí)現(xiàn),劃清項(xiàng)目的范圍 必須形成書面報(bào)告提交給用戶審查必須形成書面報(bào)告提交給用戶審查 可行性研究的目的就是,用最小的代價(jià)在盡可行性研究的目的就是,用最小的代價(jià)在盡可能短的時(shí)間內(nèi)研究并確定所面臨的問題是否能可能短的時(shí)間內(nèi)研究并確定所面臨的問題是否能夠解決。夠解決。 任務(wù):導(dǎo)出新系統(tǒng)的邏輯模型,從模型出發(fā)任務(wù):導(dǎo)出新系統(tǒng)的邏輯模型,從模型出發(fā)提出若干種實(shí)現(xiàn)方案,對每種方案進(jìn)行可行性分提出若干種實(shí)現(xiàn)方案,對每種方案進(jìn)行可

3、行性分析和提出實(shí)現(xiàn)進(jìn)度,最后提出建議。析和提出實(shí)現(xiàn)進(jìn)度,最后提出建議。2 2 可行性研究的任務(wù)可行性研究的任務(wù) 一般說來,至少應(yīng)該從下述三方面研究每種解法的可行性。(1 1)技術(shù)可行性)技術(shù)可行性:使用現(xiàn)有的技術(shù)能實(shí)現(xiàn)這個(gè)系統(tǒng)嗎(2 2)經(jīng)濟(jì)可行性:)經(jīng)濟(jì)可行性:這個(gè)系統(tǒng)的經(jīng)濟(jì)效益能超過它的開發(fā)成本嗎(3 3)操作可行性:)操作可行性:系統(tǒng)的操作方式在這個(gè)用戶組織內(nèi)行得通嗎(4 4)法律可行性:)法律可行性:必要時(shí)還應(yīng)該進(jìn)一步從法律、社會(huì)法律、社會(huì)效益效益等更廣泛的角度研究每種解法的可行性。 分析員應(yīng)該為每個(gè)可行的解法制定一個(gè)粗略的實(shí)現(xiàn)進(jìn)度。 當(dāng)然,可行性研究最根本的任務(wù)是對以后的行動(dòng)方針提出

4、建議。如果問題沒有可行的解,分析員應(yīng)該建議停止這項(xiàng)開發(fā)工程,以避免時(shí)間、資源、人力和金錢的浪費(fèi);如果問題值得解,分析員應(yīng)該推薦一個(gè)較好的解決方案,并且為工程制定一個(gè)初步的計(jì)劃。 可行性研究需要的時(shí)間長短取決于工程的規(guī)模,一般說來,可行性研究的成本只是預(yù)期的工程總成本的5%10%。 情景:情景: 20102010年,我國南方某公司為了節(jié)省人年,我國南方某公司為了節(jié)省人工成本,欲開發(fā)一系統(tǒng)軟件,預(yù)計(jì)軟件總成本為工成本,欲開發(fā)一系統(tǒng)軟件,預(yù)計(jì)軟件總成本為10001000萬元,軟件估計(jì)可使用萬元,軟件估計(jì)可使用5 5年。由于使用了該年。由于使用了該軟件,該公司每年大概可以節(jié)省軟件,該公司每年大概可以節(jié)

5、省250250萬元成本。萬元成本。 決策:假設(shè)你是該公司財(cái)務(wù)總監(jiān),你會(huì)如何決策:假設(shè)你是該公司財(cái)務(wù)總監(jiān),你會(huì)如何抉擇?抉擇? 貨幣的時(shí)間價(jià)值貨幣的時(shí)間價(jià)值 通常用利率的形式表示貨幣的時(shí)間價(jià)值。假通常用利率的形式表示貨幣的時(shí)間價(jià)值。假設(shè)年利率為設(shè)年利率為i i,如果現(xiàn)在存入,如果現(xiàn)在存入p p元,則元,則n n年后可以年后可以得到的錢數(shù)為:得到的錢數(shù)為:f=p(1+i)f=p(1+i)n n 這也就是這也就是p p元錢在元錢在n n年后的價(jià)值。反之,如果年后的價(jià)值。反之,如果n n年后能收入年后能收入f f元錢,那么這些錢的現(xiàn)在價(jià)值是元錢,那么這些錢的現(xiàn)在價(jià)值是p=f/(1+i)p=f/(1+i

6、)n n 成本效益分析成本效益分析 一般說來,人們投資于一項(xiàng)事業(yè)的目的是為了在將來得到更大好處。開發(fā)一個(gè)系統(tǒng)也是一種投資,期望將來獲得更大的經(jīng)濟(jì)效益。經(jīng)濟(jì)效益通常表現(xiàn)為減少運(yùn)行費(fèi)用和增加收入。成本效益分析的目的正是要從經(jīng)濟(jì)角度分析開發(fā)一個(gè)特定的新系統(tǒng)是否劃算,從而幫助使用部門負(fù)責(zé)人正確地作出是否投資于這項(xiàng)開發(fā)工程的決定。 軟件開發(fā)成本主要表現(xiàn)為人力消耗,乘以平均工資則得到開發(fā)費(fèi)用。成本估計(jì)不是精確的科學(xué),因此應(yīng)該使用幾種不同的估計(jì)技術(shù)以便相互校驗(yàn)。1. 1. 代碼行技術(shù)代碼行技術(shù) 代碼行技術(shù)是比較簡單的定量估算方法,它把開發(fā)每個(gè)軟件功能的成本和實(shí)現(xiàn)這個(gè)功能需要用的源代碼行數(shù)聯(lián)系起來。通常根據(jù)經(jīng)

7、驗(yàn)和歷史數(shù)據(jù)估計(jì)實(shí)現(xiàn)一個(gè)功能需要的源程序行數(shù)。當(dāng)有以往開發(fā)類似軟件的歷史數(shù)據(jù)可供參考時(shí),這個(gè)方法是非常有效的。 一旦估計(jì)出源代碼行數(shù)以后,用每行代碼的平均成本乘以行數(shù)就可以確定軟件的成本。每行代碼的平均成本主要取決于軟件的復(fù)雜程度和工資水平。1 1 成本估計(jì)成本估計(jì)應(yīng)用代碼行技術(shù)的一個(gè)例子應(yīng)用代碼行技術(shù)的一個(gè)例子生產(chǎn)率(行人月)估計(jì)行數(shù)每行成本(元行)成本(元)人力(人月)獲取實(shí)時(shí)數(shù)據(jù)92840108907209.1更新數(shù)據(jù)庫1021210546534011.8脫機(jī)分析13460072432004.4產(chǎn)生報(bào)告14545033148503.1實(shí)時(shí)控制80110013514850013.73626

8、1042.1 首先把軟件開發(fā)工程分解為若干個(gè)相對獨(dú)立的任務(wù)。首先把軟件開發(fā)工程分解為若干個(gè)相對獨(dú)立的任務(wù)。再分別估計(jì)每個(gè)單獨(dú)的開發(fā)任務(wù)的成本,最后累加起來再分別估計(jì)每個(gè)單獨(dú)的開發(fā)任務(wù)的成本,最后累加起來得出軟件開發(fā)工程的總成本得出軟件開發(fā)工程的總成本。估計(jì)每個(gè)任務(wù)的成本時(shí),通常先估計(jì)完成該項(xiàng)任務(wù)需要用的人力(以人月為單位),再乘以每人每月的平均工資而得出每個(gè)任務(wù)的成本。 最常用的辦法是按開發(fā)階段劃分任務(wù)。如果軟件系統(tǒng)很復(fù)雜,由若干個(gè)子系統(tǒng)組成,則可以把每個(gè)子系統(tǒng)再按開發(fā)階段進(jìn)一步劃分成更小的任務(wù)。 2. 2. 任務(wù)分解技術(shù)任務(wù)分解技術(shù)任 務(wù)人力(%)任 務(wù)人力(%)可行性研究5編碼和單元測試2

9、0需求分析10綜合測試40設(shè)計(jì)25總計(jì)100典型環(huán)境下各個(gè)開發(fā)階段需要使用的人力的百分比 對于剛才提到的過程控制系統(tǒng)的例子,使用任務(wù)分解對于剛才提到的過程控制系統(tǒng)的例子,使用任務(wù)分解技術(shù)估計(jì)該系統(tǒng)的開發(fā)成本,得到的結(jié)果如表。相對比可技術(shù)估計(jì)該系統(tǒng)的開發(fā)成本,得到的結(jié)果如表。相對比可以看出,用不同估計(jì)技術(shù)得到的結(jié)果有些差異。以看出,用不同估計(jì)技術(shù)得到的結(jié)果有些差異。任務(wù)估計(jì)人力(人月)元人月成本(元)需求分析5.01020051000設(shè)計(jì)15.09600144000編碼和單元測試8.0795063600綜合測試16.58700143550總計(jì)44.5402150 成本效益分析的第一步是估計(jì)開發(fā)成

10、本、運(yùn)行費(fèi)用和新系統(tǒng)將帶來的經(jīng)濟(jì)效益。而系統(tǒng)的經(jīng)濟(jì)效益等于因使用新系統(tǒng)而增加的收入,加上使用新系統(tǒng)可以節(jié)省的運(yùn)行費(fèi)用。因?yàn)檫\(yùn)行費(fèi)用和經(jīng)濟(jì)效益兩者在軟件的整個(gè)生命周期內(nèi)都存在,總的效益和生命周期的長度有關(guān),所以應(yīng)該合理地估計(jì)軟件的壽命。以后在進(jìn)行成本效益分析時(shí)一律假設(shè)生命周期為5年。 比較新系統(tǒng)的開發(fā)成本和經(jīng)濟(jì)效益,應(yīng)從經(jīng)濟(jì)角度判斷這個(gè)系統(tǒng)是否值得投資,但是,投資是現(xiàn)在進(jìn)行的,效益是將來獲得的,不能簡單地比較成本和效益,應(yīng)該考慮貨幣的時(shí)間價(jià)值。3 3 成本效益分析方法成本效益分析方法 例如,修改一個(gè)已有的庫存清單系統(tǒng),使它能在每天送給采購員一份定貨報(bào)表。修改已有的庫存清單程序并且編寫產(chǎn)生報(bào)表的程

11、序,估計(jì)共需5000元;系統(tǒng)修改后能及時(shí)定貨將消除零件短缺問題,估計(jì)因此每年可以節(jié)省2500元,五年共可節(jié)省12 500元。但是,不能簡單地把5000元和12 500元相比較,因?yàn)榍罢呤乾F(xiàn)在投資的錢,后者是若干年以后節(jié)省的錢。 假定年利率為12%,利用上面計(jì)算貨幣現(xiàn)在價(jià)值的公式可以算出修改庫存清單系統(tǒng)后每年預(yù)計(jì)節(jié)省的錢的現(xiàn)在價(jià)值,如表所示。將來的收入折算成現(xiàn)在值年將來值(元)(1i)現(xiàn)在值(元)累計(jì)的現(xiàn)在值(元)125001.122232.142232.14225001.251992.984225.12325001.401779.456004.57425001.571588.807593.37

12、525001.761418.579011.94 投資回收期 通常用投資回收期衡量一項(xiàng)開發(fā)工程的價(jià)值。所謂投資回收期就是使累計(jì)的經(jīng)濟(jì)效益等于最初投資所需要的時(shí)間。顯然,投資回收期越短就能越快獲得利潤,因此這項(xiàng)工程也就越值得投資。 例如,修改庫存清單系統(tǒng)兩年以后可以節(jié)省4225.12元,比最初的投資(5000元)還少774.88元,第三年以后將再節(jié)省1779.45元。774.881779.450.44,因此,投資回收期是2.44年。 投資回收期僅僅是一項(xiàng)經(jīng)濟(jì)指標(biāo),為了衡量一項(xiàng)開發(fā)工程的價(jià)值,還應(yīng)該考慮其他經(jīng)濟(jì)指標(biāo)。 純收入 衡量工程價(jià)值的另一項(xiàng)經(jīng)濟(jì)指標(biāo)是工程的純收入,也就是在整個(gè)生命周期之內(nèi)系統(tǒng)的

13、累計(jì)經(jīng)濟(jì)效益(折合成現(xiàn)在值)與投資之差。這相當(dāng)于比較投資開發(fā)一個(gè)軟件系統(tǒng)和把錢存在銀行中(或貸給其他企業(yè))這兩種方案的優(yōu)劣。如果純收入為零,則工程的預(yù)期效益和在銀行存款一樣,但是開發(fā)一個(gè)系統(tǒng)要冒風(fēng)險(xiǎn),因此從經(jīng)濟(jì)觀點(diǎn)看這項(xiàng)工程可能是不值得投資的。如果純收入小于零,那么這項(xiàng)工程顯然不值得投資。例如,上述修改庫存清單系統(tǒng),工程的純收入預(yù)計(jì)是9011.9450004011.94(元)4 4 可行性研究過程可行性研究過程典型的可行性研究過程有下述八個(gè)步驟:1. 復(fù)查系統(tǒng)規(guī)模和目標(biāo)2. 研究目前正在使用的系統(tǒng)3. 導(dǎo)出新系統(tǒng)的高層邏輯模型4. 進(jìn)一步定義問題 可行性研究的前四個(gè)步驟實(shí)質(zhì)上構(gòu)成一個(gè)循環(huán)。分析

14、員定義問題,分析這個(gè)問題,導(dǎo)出一個(gè)試探性的解;在此基礎(chǔ)上再次定義問題,再一次分析這個(gè)問題,修改這個(gè)解;繼續(xù)這個(gè)循環(huán)過程,直至提出的邏輯模型完全符合系統(tǒng)目標(biāo)。5. 導(dǎo)出和評價(jià)供選擇的解法6. 推薦行動(dòng)方針7. 草擬開發(fā)計(jì)劃8. 書寫文檔提交審查5 5 需求分析的任務(wù)需求分析的任務(wù) 為了開發(fā)出真正滿足用戶需求的軟件產(chǎn)品,首先必須確切地知道用戶的需求。 需求分析是軟件定義時(shí)期的最后一個(gè)階段,它的基本任務(wù)是準(zhǔn)確地回答“系統(tǒng)必須做什么”這個(gè)問題。 需求分析的任務(wù)還不是確定系統(tǒng)怎樣完成它的工作,而僅僅是確定系統(tǒng)必須完成哪些工作,也就是對目標(biāo)系統(tǒng)提出完整、準(zhǔn)確、清晰、具體的要求。 可行性研究階段產(chǎn)生的文檔,

15、特別是數(shù)據(jù)流圖,是需求分析的出發(fā)點(diǎn)。 需求分析的結(jié)果是系統(tǒng)開發(fā)的基礎(chǔ),關(guān)系到工程的成敗和軟件產(chǎn)品的質(zhì)量。因此,必須用行之有效的方法對軟件需求進(jìn)行嚴(yán)格的審查驗(yàn)證。需求分析階段的具體任務(wù)。1. 1. 確定對軟件系統(tǒng)的綜合要求確定對軟件系統(tǒng)的綜合要求 對系統(tǒng)的綜合要求主要有下述四個(gè)方面。(1)系統(tǒng)功能要求 應(yīng)該劃分出系統(tǒng)必須完成的所有功能。(2)系統(tǒng)性能要求 例如,聯(lián)機(jī)系統(tǒng)的響應(yīng)時(shí)間(即對于從終端輸入的一個(gè)“事務(wù)”,系統(tǒng)在多長時(shí)間之內(nèi)可以做出響應(yīng)),系統(tǒng)需要的存儲(chǔ)容量以及后援存儲(chǔ),重新啟動(dòng)和安全性等方面的考慮都屬于性能要求。(3 3)運(yùn)行要求)運(yùn)行要求 這類要求集中表現(xiàn)為對系統(tǒng)運(yùn)行時(shí)所處環(huán)境的要求。

16、例如,支持系統(tǒng)運(yùn)行的系統(tǒng)軟件是什么,采用哪種數(shù)據(jù)庫管理系統(tǒng),需要什么樣的外存儲(chǔ)器和數(shù)據(jù)通信接口等。(4 4)將來可能提出的要求)將來可能提出的要求 應(yīng)該明確地列出那些雖然不屬于當(dāng)前系統(tǒng)開發(fā)范疇,但是據(jù)分析將來很可能會(huì)提出來的要求。這樣做的目的是在設(shè)計(jì)過程中對系統(tǒng)將來可能的擴(kuò)充和修改預(yù)做準(zhǔn)備,以便一旦需要時(shí)能比較容易地進(jìn)行這種擴(kuò)充和修改。3. 3. 導(dǎo)出系統(tǒng)的邏輯模型導(dǎo)出系統(tǒng)的邏輯模型 綜合上述兩項(xiàng)需求分析的結(jié)果,可以導(dǎo)出系統(tǒng)詳細(xì)的邏輯模型。通常用數(shù)據(jù)流圖、數(shù)據(jù)字典和主要的處理算法描述這個(gè)邏輯模型。2. 2. 確定對系統(tǒng)的數(shù)據(jù)要求確定對系統(tǒng)的數(shù)據(jù)要求 任何一個(gè)軟件系統(tǒng)本質(zhì)上都是信息處理系統(tǒng),系統(tǒng)

17、必須處理的信息和系統(tǒng)應(yīng)該產(chǎn)生的信息對軟件設(shè)計(jì)有深遠(yuǎn)影響,因此,必須分析系統(tǒng)的數(shù)據(jù)要求,這是軟件需求分析的一個(gè)重要任務(wù)。分析系統(tǒng)的數(shù)據(jù)要求通常采用建立概念模型的方法。4. 4. 修正系統(tǒng)開發(fā)計(jì)劃修正系統(tǒng)開發(fā)計(jì)劃 根據(jù)在需求分析過程中獲得的對軟件系統(tǒng)更深入、更具體的認(rèn)識(shí),可以較準(zhǔn)確地估計(jì)系統(tǒng)的成本和進(jìn)度,從而可以修正在前一個(gè)階段所制定的開發(fā)計(jì)劃。5. 5. 開發(fā)原型系統(tǒng)開發(fā)原型系統(tǒng) 在需求分析過程中使用原型系統(tǒng)的主要目的是,使得用戶通過實(shí)踐獲得關(guān)于未來的系統(tǒng)將怎樣為他們工作的更直接更具體的概念,從而可以更準(zhǔn)確地提出和確定他們對所開發(fā)的軟件的要求。 建立原型系統(tǒng)作為一種應(yīng)該采取的策略的理由如下: 由

18、于人類認(rèn)識(shí)能力的局限性,用戶往往不能預(yù)先提出全部要求; 在用戶和系統(tǒng)分析員之間存在固有的通信鴻溝,分析員常常誤解了用戶的需求; 用戶需要一個(gè)可運(yùn)行的系統(tǒng)模型,以便獲得有關(guān)未來系統(tǒng)的實(shí)踐經(jīng)驗(yàn); 在軟件開發(fā)過程中重復(fù)和反復(fù)是必要的和不可避免的; 目前已經(jīng)有快速建立原型系統(tǒng)的工具可供選用。功能需求性能需求可靠性和可用性需求出錯(cuò)處理需求接口需求 描述應(yīng)用系統(tǒng)與通信環(huán)境的格式約束 描述在設(shè)計(jì)或?qū)崿F(xiàn)應(yīng)用系統(tǒng)時(shí)遵循的條件限制逆向需求 系統(tǒng)不應(yīng)該做什么將來可能提出的要求6 6 需求分析的過程需求分析的過程 結(jié)構(gòu)化分析方法(簡稱結(jié)構(gòu)化分析方法(簡稱sasa方法)就是面向數(shù)據(jù)流自方法)就是面向數(shù)據(jù)流自頂向下逐步求

19、精進(jìn)行需求分析的方法。頂向下逐步求精進(jìn)行需求分析的方法。通過可行性研究已經(jīng)得出了目標(biāo)系統(tǒng)的高層數(shù)據(jù)流圖,需求分析的目的之一就是把數(shù)據(jù)流和數(shù)據(jù)存儲(chǔ)定義到元素級。 典型的需求分析過程主要由下述步驟組成。典型的需求分析過程主要由下述步驟組成。 1. 1. 沿?cái)?shù)據(jù)流圖回溯沿?cái)?shù)據(jù)流圖回溯 2. 2. 請用戶復(fù)查請用戶復(fù)查 3. 3. 細(xì)化數(shù)據(jù)流圖細(xì)化數(shù)據(jù)流圖 隨著分析過程的進(jìn)展,經(jīng)過發(fā)現(xiàn)問題和解答問題的反復(fù)循環(huán),分析員越來越深入具體地定義了目標(biāo)系統(tǒng),最終得到對系統(tǒng)數(shù)據(jù)和功能需求的滿意了解。圖粗略地概括了上述分析過程。 需求分析的基本過程4. 4. 修正開發(fā)計(jì)劃修正開發(fā)計(jì)劃5. 5. 書寫文檔書寫文檔 系

20、統(tǒng)規(guī)格說明系統(tǒng)規(guī)格說明 數(shù)據(jù)要求數(shù)據(jù)要求 用戶系統(tǒng)描述用戶系統(tǒng)描述 修正的開發(fā)計(jì)劃修正的開發(fā)計(jì)劃6. 6. 審查和復(fù)審審查和復(fù)審7 7 與用戶溝通的方法與用戶溝通的方法 軟件需求分析過程總是從兩方或多方之間的溝通與交流開始。通常,用戶對他們所面臨的問題有親身體會(huì),知道必須做什么,但是往往不能完整準(zhǔn)確地表達(dá)出他們的要求,更不知道怎樣利用計(jì)算機(jī)軟件解決他們的問題;軟件開發(fā)人員知道怎樣用軟件實(shí)現(xiàn)人們的要求,但是對特定用戶的具體要求并不完全清楚。這樣就需要相互溝通和交流信息。 原型系統(tǒng)原型系統(tǒng)是促進(jìn)溝通的重要手段,快速建立軟件原型是最準(zhǔn)確、最有效、最強(qiáng)大的需求分析技術(shù)。除了通過原型系統(tǒng)相互溝通之外,還

21、訪談訪談和簡易的應(yīng)用規(guī)格說明技術(shù)簡易的應(yīng)用規(guī)格說明技術(shù)兩種典型技術(shù)。1 1 訪談訪談 訪談(或稱為會(huì)談)是最早開始運(yùn)用的獲取用戶需求訪談(或稱為會(huì)談)是最早開始運(yùn)用的獲取用戶需求的技術(shù),也是迄今為止仍然廣泛使用的主要的需求分析技的技術(shù),也是迄今為止仍然廣泛使用的主要的需求分析技術(shù)。術(shù)。 訪談?dòng)袃煞N基本形式,分別是正式的和非正式的訪談。 當(dāng)需要調(diào)查大量人員的意見時(shí),向被調(diào)查的人員分發(fā)調(diào)查表是一個(gè)十分有效的做法。 在對用戶進(jìn)行訪談的過程中使用情景分析技術(shù)往往非常有效。所謂情景分析就是對用戶運(yùn)用目標(biāo)系統(tǒng)解決某個(gè)具體問題的方法和結(jié)果進(jìn)行分析。 情景分析的用處主要體現(xiàn)在下述兩個(gè)方面: 它能在某種程度上演

22、示產(chǎn)品的行為,從而便于用戶理解,而且還可能進(jìn)一步揭示出一些系統(tǒng)分析員目前還不知道的需求。 由于情景分析較易為用戶所理解,因此,使用這種技術(shù)能保證用戶在需求分析過程中始終扮演一個(gè)積極主動(dòng)的角色。需求分析的目標(biāo)是了解用戶的真正需求,而這一信息的惟一來源是用戶,因此,讓用戶起積極主動(dòng)的作用對需求分析工作獲得成功是至關(guān)重要的。 使用傳統(tǒng)的訪談技術(shù)定義需求時(shí),用戶和開發(fā)者往往有意無意地區(qū)分“我們和他們”。由于不能做到像同一個(gè)團(tuán)隊(duì)的人那樣同心協(xié)力地識(shí)別和精化需求,這種方法的效果有時(shí)并不理想(經(jīng)常發(fā)生誤解,還可能遺漏重要的信息)。 為了解決上述問題,人們研究出了一種面向團(tuán)隊(duì)的需求收集法,稱為簡易的應(yīng)用規(guī)格說

23、明技術(shù)。這種方法提倡用戶與開發(fā)者密切合作,共同標(biāo)識(shí)問題,提出解決方案的要素,商討不同的方法并指定基本的需求。今天,簡易的應(yīng)用規(guī)格說明技術(shù)已經(jīng)成為信息系統(tǒng)界使用的主流技術(shù)。2 2 簡易的應(yīng)用規(guī)格說明技術(shù)簡易的應(yīng)用規(guī)格說明技術(shù) 盡管存在許多不同的簡易應(yīng)用規(guī)格說明方法,但是它們遵循的基本準(zhǔn)則是相同的: 在中立地點(diǎn)舉行由開發(fā)者和用戶雙方出席的會(huì)議。 制定準(zhǔn)備會(huì)議和參加會(huì)議的規(guī)則。 提出一個(gè)議事日程,這個(gè)日程應(yīng)該足夠正式以便能夠涵蓋所有要點(diǎn),同時(shí)這個(gè)日程又應(yīng)該足夠非正式,以便鼓勵(lì)自由思維。 由一個(gè)“協(xié)調(diào)人”來主持會(huì)議,他既可以是用戶也可以是開發(fā)者還可以是從外面請來的人。 使用一種“定義機(jī)制”(例如,工作

24、表、圖表等)。 目標(biāo)是標(biāo)識(shí)問題、提出解決方案要素、商討不同的方法以及在有利于實(shí)現(xiàn)目標(biāo)的氛圍中指定初步的需求。8 8 分析建模與規(guī)格說明分析建模與規(guī)格說明1 1 分析建模分析建模 系統(tǒng)分析,特別是需求分析的主要任務(wù),是理解用戶的需求定義所要開發(fā)的目標(biāo)系統(tǒng)。為了更好地理解問題,人們常常采用建立模型的方法。模型就是為了理解事物而模型就是為了理解事物而對事物做出的一種抽象,是對事物的一種無歧義的書面描對事物做出的一種抽象,是對事物的一種無歧義的書面描述。述。通常,通常,模型由一組圖形符號(hào)和組織這些符號(hào)的規(guī)則組模型由一組圖形符號(hào)和組織這些符號(hào)的規(guī)則組成。成。 1 1:必須理解和表示問題的信息域,建立數(shù):

25、必須理解和表示問題的信息域,建立數(shù)據(jù)模型據(jù)模型 2 2:必須定義軟件應(yīng)完成的功能,要求建立:必須定義軟件應(yīng)完成的功能,要求建立功能模型功能模型 3 3:必須表示作為外部事件結(jié)果的軟件行為,:必須表示作為外部事件結(jié)果的軟件行為,建立行為模型建立行為模型 需求建模需求建模數(shù)據(jù)模型:實(shí)體數(shù)據(jù)模型:實(shí)體- -聯(lián)系圖聯(lián)系圖(er(er圖圖) )功能模型:數(shù)據(jù)流圖功能模型:數(shù)據(jù)流圖(dfd)(dfd) 行為模型:狀態(tài)轉(zhuǎn)換圖行為模型:狀態(tài)轉(zhuǎn)換圖 從技術(shù)的角度看,軟件工程實(shí)質(zhì)上是從一系列建?;钴浖こ虒?shí)質(zhì)上是從一系列建?;顒?dòng)開始的動(dòng)開始的,這些建?;顒?dòng)導(dǎo)致對要求開發(fā)的軟件要有完整的需求規(guī)格說明和全面的設(shè)計(jì)表示

26、。 結(jié)構(gòu)化分析就是一種建立結(jié)構(gòu)化的分析模型的活動(dòng)。從不同角度描述或理解軟件系統(tǒng),需要不同的模型。結(jié)構(gòu)化分析主要建立功能模型和數(shù)據(jù)模型。2 2 軟件需求規(guī)格說明書軟件需求規(guī)格說明書 由國家標(biāo)準(zhǔn)局發(fā)布的國家標(biāo)準(zhǔn)gb8567-88“計(jì)算機(jī)軟件產(chǎn)品開發(fā)文件編制指南”,規(guī)定了在需求分析階段應(yīng)寫出兩份文檔,分別是“軟件需求說明書”和“數(shù)據(jù)要求說明書”。9 9 驗(yàn)證軟件需求驗(yàn)證軟件需求9.1 9.1 至少從四個(gè)方面驗(yàn)證軟件需求至少從四個(gè)方面驗(yàn)證軟件需求 需求分析階段的工作結(jié)果是開發(fā)軟件系統(tǒng)的重要基礎(chǔ),大量統(tǒng)計(jì)數(shù)字表明,軟件系統(tǒng)中15%的錯(cuò)誤起源于錯(cuò)誤的需求。為了提高軟件質(zhì)量,確保軟件開發(fā)成功,降低軟件開發(fā)成

27、本,一旦對目標(biāo)系統(tǒng)提出一組要求之后,必須嚴(yán)格驗(yàn)證這些需求的正確性。一般說來,應(yīng)該從下述四個(gè)方面進(jìn)行驗(yàn)證: 一致性一致性 完整性完整性 現(xiàn)實(shí)性現(xiàn)實(shí)性 有效性有效性跳過9.2 9.2 驗(yàn)證軟件需求的方法驗(yàn)證軟件需求的方法1. 驗(yàn)證需求的一致性 當(dāng)需求分析的結(jié)果是用自然語言書寫的時(shí)候,除了靠人工技術(shù)審查驗(yàn)證軟件系統(tǒng)規(guī)格說明書的正確性之外,目前還沒有其他更好的“測試”方法。但是,這種非形式化的規(guī)格說明書是難于驗(yàn)證的。 2. 2. 驗(yàn)證需求的現(xiàn)實(shí)性驗(yàn)證需求的現(xiàn)實(shí)性 為了驗(yàn)證需求的現(xiàn)實(shí)性,分析員應(yīng)該參照以往開發(fā)類似系統(tǒng)的經(jīng)驗(yàn),分析用現(xiàn)有的軟、硬件技術(shù)實(shí)現(xiàn)目標(biāo)系統(tǒng)的可能性。必要的時(shí)候應(yīng)該采用仿真或性能模擬技

28、術(shù),輔助分析軟件需求規(guī)格說明書的現(xiàn)實(shí)性。3 3、4 4: 驗(yàn)證需求的完整性和有效性驗(yàn)證需求的完整性和有效性 只有目標(biāo)系統(tǒng)的用戶才真正知道軟件需求規(guī)格說明書是否完整、準(zhǔn)確地描述了他們的需求。因此,檢驗(yàn)需求的完整性,特別是證明系統(tǒng)確實(shí)滿足用戶的實(shí)際需要,只有在用戶的密切合作下才能完成。只有當(dāng)他們有某種工作著的軟件系統(tǒng)可以實(shí)際使用和評價(jià)時(shí),才能完整確切地提出他們的需要。 使用原型系統(tǒng)是一個(gè)比較現(xiàn)實(shí)的替代方法,開發(fā)原型系統(tǒng)所需要的成本和時(shí)間可以大大少于開發(fā)實(shí)際系統(tǒng)所需要的。用戶通過試用原型系統(tǒng),也能獲得許多寶貴的經(jīng)驗(yàn),從而可以提出更符合實(shí)際的要求。9.3 9.3 用于需求分析的軟件工具用于需求分析的軟

29、件工具 為了更有效地保證軟件需求的正確性,特別是為了保證需求的一致性,需要有適當(dāng)?shù)能浖ぞ咧С中枨蠓治龉ぷ?。這類軟件工具應(yīng)該滿足下列要求。 (1)必須有形式化的語法(或表),因此可以用計(jì)算機(jī)自動(dòng)處理使用這種語法說明的內(nèi)容; (2)使用這個(gè)軟件工具能夠?qū)С鲈敿?xì)的文檔; (3)必須提供分析(測試)規(guī)格說明書的不一致性和冗余性的手段,并且應(yīng)該能夠產(chǎn)生一組報(bào)告指明對完整性分析的結(jié)果;(4)使用這個(gè)軟件工具之后,應(yīng)該能夠改進(jìn)通信狀況。10 10 系統(tǒng)流程圖系統(tǒng)流程圖 系統(tǒng)流程圖是描繪物理系統(tǒng)的傳統(tǒng)工具。它的基本思想是用圖形符號(hào)以黑盒子形式描繪系統(tǒng)里面的每個(gè)部件(程序、文件、數(shù)據(jù)庫、表格、人工過程等等)。

30、系統(tǒng)流系統(tǒng)流程圖表達(dá)的是信息在系統(tǒng)各部件之間流動(dòng)的情況程圖表達(dá)的是信息在系統(tǒng)各部件之間流動(dòng)的情況,而不是對信息進(jìn)行加工處理的控制過程,因此盡管系統(tǒng)流程圖使用的某些符號(hào)和程序流程圖中用的符號(hào)相同,但是它卻是物理數(shù)據(jù)流圖而不是程序流程圖。 當(dāng)以概括的方式抽象地描繪一個(gè)系統(tǒng)時(shí),僅使用圖2.2中列出的基本符號(hào)就夠了,其中每個(gè)符號(hào)表示系統(tǒng)中的一個(gè)部件。10.1 10.1 系統(tǒng)流程圖的符號(hào)系統(tǒng)流程圖的符號(hào)當(dāng)需要更具體地描繪一個(gè)物理系統(tǒng)時(shí),還需要使用圖中列出的系統(tǒng)符號(hào)。 假設(shè)一家工廠的采購部每天需要一張定貨報(bào)表,報(bào)表按零件編號(hào)排序,表中列出所有需要再次定貨的零件。對于每個(gè)需要再次定貨的零件應(yīng)該列出下述數(shù)據(jù):

31、零件編號(hào),零件名稱,定貨數(shù)量,目前價(jià)格,主要供應(yīng)者,次要供應(yīng)者。零件入庫或出庫稱為事務(wù),通過放在倉庫中的終端把事務(wù)報(bào)告給定貨系統(tǒng)。當(dāng)某種零件的庫存數(shù)量少于庫存量臨界值時(shí)就應(yīng)該再次定貨。 圖中每個(gè)符號(hào)用黑盒子形式定義了組成系統(tǒng)的一個(gè)部件,然而并沒有指明每個(gè)部件的具體工作過程;圖中的箭頭確定了信息通過系統(tǒng)的邏輯路徑(信息流動(dòng)路徑)。 系統(tǒng)流程圖的習(xí)慣畫法是使信息在圖中從頂向下或從左向右流動(dòng)。 每個(gè)符號(hào)都有名稱,因此可以起文檔的作用。許多分析員喜歡在系統(tǒng)流程圖上加更詳細(xì)的注釋,有些人甚至另加一頁紙來解釋系統(tǒng)流程圖。10.3 10.3 分層畫系統(tǒng)流程圖分層畫系統(tǒng)流程圖 面對復(fù)雜的系統(tǒng)時(shí),一個(gè)比較好的方

32、法是分層次地描繪這個(gè)系統(tǒng)。首先用一張高層次的系統(tǒng)流程圖描繪系統(tǒng)總體概貌,表明系統(tǒng)的關(guān)鍵功能。然后分別把每個(gè)關(guān)鍵功能擴(kuò)展到適當(dāng)?shù)脑敿?xì)程度,畫在單獨(dú)的一頁紙上。這種分層次的描繪方法便于閱讀者按從抽象到具體的過程逐步深入地了解一個(gè)復(fù)雜的系統(tǒng)。 例如,上述庫存清單系統(tǒng)可以分為兩個(gè)層次來描繪(只是為舉例說明分層次描繪的方法,實(shí)際上這樣簡單的系統(tǒng)用不著分層描繪)。 分析員通常必須研究現(xiàn)有的物理系統(tǒng),目的不是提供完整的文檔資料,只是為了了解這個(gè)系統(tǒng)。畫系統(tǒng)流程圖是概括大量技術(shù)信息以及發(fā)現(xiàn)遺漏疏忽的極好方法。 在設(shè)計(jì)階段需要把設(shè)計(jì)結(jié)果從抽象的邏輯模型轉(zhuǎn)變成具體的物理系統(tǒng),用特定的程序或過程代替廣義的處理,用具

33、體的文件或數(shù)據(jù)庫代替一般的數(shù)據(jù)存儲(chǔ)。畫出系統(tǒng)流程圖就可以具體設(shè)想系統(tǒng)將如何實(shí)現(xiàn)。總之,不論在分析階段還是設(shè)計(jì)階段,系統(tǒng)流程圖作為一種清晰簡明的通信手段都是很有價(jià)值的,非常有助于開發(fā)人員和用戶交流信息。 當(dāng)一個(gè)復(fù)雜的大系統(tǒng)由許多組軟件工程師共同開發(fā)時(shí),系統(tǒng)流程圖可以作為公共參考文件,指明每個(gè)開發(fā)小組的工作在系統(tǒng)中的地位。10.4 10.4 系統(tǒng)流程圖的用途系統(tǒng)流程圖的用途11 11 實(shí)體實(shí)體- -聯(lián)系圖聯(lián)系圖 軟件系統(tǒng)本質(zhì)上是信息處理系統(tǒng),因此,在軟件系統(tǒng)的整個(gè)開發(fā)過程中都必須考慮兩方面的問題“數(shù)據(jù)”及對數(shù)據(jù)的“處理”。在需求分析階段則既要分析用戶的數(shù)據(jù)要求,又要分析用戶的處理要求。 為了把用戶

34、的數(shù)據(jù)要求清晰明確地表達(dá)出來,系統(tǒng)分析員通常建立一個(gè)概念性的數(shù)據(jù)模型(也稱為信息模型)。概念性數(shù)據(jù)模型是一種面向問題的數(shù)據(jù)模型,是按照用戶的觀點(diǎn)來對數(shù)據(jù)和信息建模。它描述了從用戶角度看到的數(shù)據(jù),它反映了用戶的現(xiàn)實(shí)環(huán)境,且與在軟件系統(tǒng)中的實(shí)現(xiàn)方法無關(guān)。 根據(jù)所要解決的問題,來確定實(shí)體的合適的屬性。 在er圖中,用橢圓形或圓角矩形表示實(shí)體(或聯(lián)系)的屬性,并用直線把實(shí)體(或聯(lián)系)與其屬性連接起來。 人們通常就是用實(shí)體、聯(lián)系和屬性這三個(gè)概念來理解現(xiàn)實(shí)問題的,因此,er模型比較接近人的習(xí)慣思維方式。此外,er模型使用簡單的圖形符號(hào)表達(dá)分析員對所要解決的問題的理解,不熟悉計(jì)算機(jī)技術(shù)的用戶也能理解它,因此

35、,er模型可以作為分析員與用戶之間有效的交流工具。 最常用的表示概念性數(shù)據(jù)模型的方法,是實(shí)體-聯(lián)系方法(entity-relationship approach)。這種方法用實(shí)體-聯(lián)系圖(也稱為實(shí)體-關(guān)系圖或e-r圖)描述現(xiàn)實(shí)世界中的實(shí)體,而不涉及這些實(shí)體在系統(tǒng)中的實(shí)現(xiàn)方法。用這種方法表示的概念性數(shù)據(jù)模型又稱為er模型。 實(shí)體-聯(lián)系模型中包含“實(shí)體”、“聯(lián)系”和“屬性”等三個(gè)基本成分,下面分別介紹這三個(gè)基本成分。1. 1. 實(shí)體實(shí)體 實(shí)體是客觀世界中存在的且可相互區(qū)分的事物。實(shí)體可以是人也可以是物;可以是具體事物也可以是抽象概念。例如,職工、學(xué)生、課程、教師等都是實(shí)體。2. 2. 聯(lián)系聯(lián)系 客

36、觀世界中的事物彼此間往往是有聯(lián)系的。例如,教師與課程間存在“教”這種聯(lián)系,而學(xué)生與課程間則存在“學(xué)”這種聯(lián)系。聯(lián)系可分為以下三類:(1)一對一聯(lián)系(11)(2)一對多聯(lián)系(1n)(3)多對多聯(lián)系(mn)3. 屬性 屬性是實(shí)體或聯(lián)系所具有的性質(zhì)。通常一個(gè)實(shí)體由若干個(gè)屬性來刻畫,例如,“學(xué)生”實(shí)體有學(xué)號(hào)、姓名、性別、系、年級等屬性;“教師”實(shí)體有教工號(hào)、姓名、性別、職稱、職務(wù)等屬性;“課程”實(shí)體有課程號(hào)、課名、學(xué)時(shí)、學(xué)分等屬性。 聯(lián)系也可能有屬性。例如,學(xué)生“學(xué)”某門課程所取得的成績,既不是學(xué)生的屬性也不是課程的屬性。由于“成績”既依賴于某名特定的學(xué)生又依賴于某門特定的課程,所以這是學(xué)生與課程之間

37、的聯(lián)系“學(xué)”的屬性。某校教學(xué)管理er圖12 12 數(shù)據(jù)流圖數(shù)據(jù)流圖 數(shù)據(jù)流圖(dfd,data flow diagram)是用來描繪軟件系統(tǒng)的邏輯模型的工具。 通過數(shù)據(jù)流圖描繪信息在系統(tǒng)中流動(dòng)和加工處理的情況。 是各類人員之間極好的交流、溝通的工具 設(shè)計(jì)數(shù)據(jù)流圖只需考慮系統(tǒng)必須完成的基本邏輯功能,一般在圖中不使用具體的物理元素,完全不需要考慮如何具體地實(shí)現(xiàn)這些功能。 12.112.1數(shù)據(jù)流圖數(shù)據(jù)流圖符號(hào)符號(hào) 數(shù)據(jù)的源點(diǎn)數(shù)據(jù)的源點(diǎn)/ /終點(diǎn)終點(diǎn): :是指在系統(tǒng)以外的事物或人是指在系統(tǒng)以外的事物或人 加工處理加工處理: :表示對數(shù)據(jù)的處理功能表示對數(shù)據(jù)的處理功能 數(shù)據(jù)存儲(chǔ)數(shù)據(jù)存儲(chǔ): :表示對數(shù)據(jù)存

38、儲(chǔ)的邏輯描述,它可以是表示對數(shù)據(jù)存儲(chǔ)的邏輯描述,它可以是數(shù)據(jù)庫文件或任何其他形式的數(shù)據(jù)組織。數(shù)據(jù)庫文件或任何其他形式的數(shù)據(jù)組織。 數(shù)據(jù)流數(shù)據(jù)流: :表示數(shù)據(jù)在系統(tǒng)中流動(dòng)的方向。表示數(shù)據(jù)在系統(tǒng)中流動(dòng)的方向。 或或或數(shù)據(jù)的源點(diǎn)/終點(diǎn)加工/處理數(shù)據(jù)存儲(chǔ)數(shù)據(jù)流 除了上述四種基本符號(hào)之外,有時(shí)也使用除了上述四種基本符號(hào)之外,有時(shí)也使用幾種附加符號(hào)。星號(hào)(幾種附加符號(hào)。星號(hào)(*)表示數(shù)據(jù)流之間是)表示數(shù)據(jù)流之間是“與與”關(guān)系(同時(shí)存在);加號(hào)()表示關(guān)系(同時(shí)存在);加號(hào)()表示“或或”關(guān)系關(guān)系; 號(hào)表示只能從中選一個(gè)(互斥號(hào)表示只能從中選一個(gè)(互斥的關(guān)系)。下圖給出了這些附加符號(hào)的含義。的關(guān)系)。下圖給

39、出了這些附加符號(hào)的含義。 數(shù)據(jù)存儲(chǔ)和數(shù)據(jù)流都是數(shù)據(jù),僅僅所處的狀態(tài)不同。數(shù)據(jù)存儲(chǔ)是處于靜止?fàn)顟B(tài)的數(shù)據(jù),數(shù)據(jù)流是處于運(yùn)動(dòng)中的數(shù)據(jù)。 通常在數(shù)據(jù)流圖中忽略出錯(cuò)處理,也不包括諸如打開或關(guān)閉文件之類的內(nèi)務(wù)處理。數(shù)據(jù)流圖的基本要點(diǎn)是描繪“做什么”而不考慮“怎樣做”。 定貨系統(tǒng):問題描述(1) 工廠的采購部每天需要一張定貨報(bào)表,報(bào)表按零件編號(hào)排序,表中列出所有需要再次定貨的零件。對于每個(gè)需要再次定貨的零件應(yīng)該列出下述數(shù)據(jù);零件編號(hào)、零件名稱、定貨數(shù)量、目前價(jià)格、主要供應(yīng)者和次要供應(yīng)者。零件入庫或出庫稱為事務(wù),通過放在倉庫中的crt終端把事務(wù)報(bào)告給定貨系統(tǒng)。當(dāng)某種零件的庫存數(shù)量少于庫存量臨界值時(shí)就應(yīng)該再次定

40、貨。 畫出上述定貨系統(tǒng)的數(shù)據(jù)流圖可采用以下步驟。12.2 12.2 舉例舉例定貨系統(tǒng):提取dfd元素(2)其中加星號(hào)標(biāo)記的是在其中加星號(hào)標(biāo)記的是在問題描述中隱含的成分。問題描述中隱含的成分。定貨系統(tǒng):頂(0)層數(shù)據(jù)流圖(3)倉庫管理員定貨系統(tǒng)采購員事務(wù)定貨報(bào)表 在圖中給處理和數(shù)據(jù)存儲(chǔ)都加了編號(hào),這樣做的目的在圖中給處理和數(shù)據(jù)存儲(chǔ)都加了編號(hào),這樣做的目的是便于引用和追蹤。是便于引用和追蹤。定貨系統(tǒng):1層數(shù)據(jù)流圖(4)倉庫管理員產(chǎn)生報(bào)表采購員處理事務(wù)12d1庫存清單d2定貨信息庫存清單事務(wù)定貨信息定貨信息定貨報(bào)表2層數(shù)據(jù)流圖(細(xì)化處理1)(5)接收事務(wù)1.1d1庫存清單d2定貨信息庫存清單事務(wù)定貨

41、信息更新庫存清單處理事務(wù)事務(wù)庫存信息1.21.3倉庫管理員自頂向下,逐步細(xì)化 注意,并不是所有數(shù)據(jù)存儲(chǔ)和數(shù)據(jù)流都能直接從問題描述中提取出來。例如,“當(dāng)某種零件的庫存數(shù)量少于庫存量臨界值時(shí)就應(yīng)該再次定貨”,這個(gè)事實(shí)意味著必須在某個(gè)地方有零件庫存量事實(shí)意味著必須在某個(gè)地方有零件庫存量和庫存量臨界值這樣的數(shù)據(jù)。和庫存量臨界值這樣的數(shù)據(jù)。因?yàn)檫@些數(shù)據(jù)元素的存在時(shí)間看來應(yīng)該比單個(gè)事務(wù)的存在時(shí)間長,所以認(rèn)為有一個(gè)數(shù)據(jù)存儲(chǔ)保存庫存清單數(shù)據(jù)是合理的。數(shù)據(jù)流圖的分層數(shù)據(jù)流圖的分層 數(shù)據(jù)流圖的層次結(jié)構(gòu)數(shù)據(jù)流圖的層次結(jié)構(gòu) 為了表達(dá)數(shù)據(jù)處理過程的數(shù)據(jù)加工情況,需為了表達(dá)數(shù)據(jù)處理過程的數(shù)據(jù)加工情況,需要采用要采用層次結(jié)

42、構(gòu)層次結(jié)構(gòu)的數(shù)據(jù)流圖。按照系統(tǒng)的層的數(shù)據(jù)流圖。按照系統(tǒng)的層次結(jié)構(gòu)進(jìn)行次結(jié)構(gòu)進(jìn)行逐步分解逐步分解,并以分層的數(shù)據(jù)流圖,并以分層的數(shù)據(jù)流圖反映這種結(jié)構(gòu)關(guān)系,能清楚地表達(dá)和容易理反映這種結(jié)構(gòu)關(guān)系,能清楚地表達(dá)和容易理解整個(gè)系統(tǒng)解整個(gè)系統(tǒng)步驟步驟 (1)畫頂層數(shù)據(jù)流圖)畫頂層數(shù)據(jù)流圖 (2)畫第一層數(shù)據(jù)流圖)畫第一層數(shù)據(jù)流圖 (3)畫下層各數(shù)據(jù)流圖)畫下層各數(shù)據(jù)流圖 接下來應(yīng)該對功能級數(shù)據(jù)流圖中描繪的系統(tǒng)主要功能進(jìn)接下來應(yīng)該對功能級數(shù)據(jù)流圖中描繪的系統(tǒng)主要功能進(jìn)一步細(xì)化??紤]通過系統(tǒng)的邏輯數(shù)據(jù)流:當(dāng)發(fā)生一個(gè)事務(wù)時(shí)一步細(xì)化。考慮通過系統(tǒng)的邏輯數(shù)據(jù)流:當(dāng)發(fā)生一個(gè)事務(wù)時(shí)必須首先接收它;隨后按照事務(wù)的內(nèi)容修改

43、庫存清單;最后,必須首先接收它;隨后按照事務(wù)的內(nèi)容修改庫存清單;最后,如果更新后的庫存量少于庫存量臨界值,則應(yīng)該再次定貨,如果更新后的庫存量少于庫存量臨界值,則應(yīng)該再次定貨,也就是需要處理定貨信息。因此,把也就是需要處理定貨信息。因此,把“處理事務(wù)處理事務(wù)”這個(gè)功能這個(gè)功能分解為分解為“接收事務(wù)接收事務(wù)”、“更新庫存清單更新庫存清單”和和“處理定貨處理定貨”這這樣三個(gè)子功能,在邏輯上是合理的。樣三個(gè)子功能,在邏輯上是合理的。畫數(shù)據(jù)流圖的注意事項(xiàng)畫數(shù)據(jù)流圖的注意事項(xiàng) 在數(shù)據(jù)流圖中,需按層給加工框編號(hào)。編號(hào)表明該加工所處層次及上下層的親子關(guān)系 規(guī)定任何一個(gè)數(shù)據(jù)流子圖必須與它上一層的一個(gè)加工對應(yīng),兩

44、者的輸入數(shù)據(jù)流和輸出數(shù)據(jù)流必須一致。此即父圖與子圖的平衡 可以在數(shù)據(jù)流圖中加入物質(zhì)流,幫助用戶理解數(shù)據(jù)流圖 圖上每個(gè)元素都必須有名字 數(shù)據(jù)流圖中不可夾帶控制流 初畫時(shí)可以忽略瑣碎的細(xì)節(jié),以集中精力于主要數(shù)據(jù)流1. 為數(shù)據(jù)流(或數(shù)據(jù)存儲(chǔ))命名 名字應(yīng)代表整個(gè)數(shù)據(jù)流(或數(shù)據(jù)存儲(chǔ))的內(nèi)容,而不是僅僅反映它的某些成分。 不要使用空洞的、缺乏具體含義的名字(如“數(shù)據(jù)”、“信息”、“輸入”之類)。 如果在為某個(gè)數(shù)據(jù)流(或數(shù)據(jù)存儲(chǔ))起名字時(shí)遇到了困難,則很可能是因?yàn)閷?shù)據(jù)流圖分解不恰當(dāng)造成的,應(yīng)該試試重新分解,看是否能克服這個(gè)困難。12.3 12.3 命名命名 通常先為數(shù)據(jù)流命名,然后再為與之相關(guān)聯(lián)的處理命

45、通常先為數(shù)據(jù)流命名,然后再為與之相關(guān)聯(lián)的處理命名。體現(xiàn)了人類習(xí)慣的名。體現(xiàn)了人類習(xí)慣的“由表及里由表及里”的思考過程。的思考過程。 名字應(yīng)該反映整個(gè)處理的功能,而不是它的一部分。名字應(yīng)該反映整個(gè)處理的功能,而不是它的一部分。 名字最好由一個(gè)及物動(dòng)詞,加上一個(gè)具體的賓語組成名字最好由一個(gè)及物動(dòng)詞,加上一個(gè)具體的賓語組成。盡量避免使用。盡量避免使用“加工加工”、“處理處理”等籠統(tǒng)的動(dòng)詞作名字。等籠統(tǒng)的動(dòng)詞作名字。 通常名字中僅包括一個(gè)動(dòng)詞,如果必須用兩個(gè)動(dòng)詞才通常名字中僅包括一個(gè)動(dòng)詞,如果必須用兩個(gè)動(dòng)詞才能描述整個(gè)處理的功能,則把這個(gè)處理再分解成兩個(gè)處理可能描述整個(gè)處理的功能,則把這個(gè)處理再分解成

46、兩個(gè)處理可能更恰當(dāng)些。能更恰當(dāng)些。 如果在為某個(gè)處理命名時(shí)遇到困難,則很可能是發(fā)現(xiàn)如果在為某個(gè)處理命名時(shí)遇到困難,則很可能是發(fā)現(xiàn)了分解不當(dāng)?shù)嫩E象,應(yīng)考慮重新分解。了分解不當(dāng)?shù)嫩E象,應(yīng)考慮重新分解。2. 2. 為處理命名為處理命名12.4 數(shù)據(jù)流圖的用途數(shù)據(jù)流圖的用途 畫數(shù)據(jù)流圖的基本目的是利用它作為交流信息的工畫數(shù)據(jù)流圖的基本目的是利用它作為交流信息的工具。分析員把他對現(xiàn)有系統(tǒng)的認(rèn)識(shí)或?qū)δ繕?biāo)系統(tǒng)的設(shè)想具。分析員把他對現(xiàn)有系統(tǒng)的認(rèn)識(shí)或?qū)δ繕?biāo)系統(tǒng)的設(shè)想用數(shù)據(jù)流圖描繪出來,供有關(guān)人員審查確認(rèn)。由于在數(shù)用數(shù)據(jù)流圖描繪出來,供有關(guān)人員審查確認(rèn)。由于在數(shù)據(jù)流圖中通常僅僅使用四種基本符號(hào),而且不包含任何據(jù)流

47、圖中通常僅僅使用四種基本符號(hào),而且不包含任何有關(guān)物理實(shí)現(xiàn)的細(xì)節(jié),因此,絕大多數(shù)用戶都可以理解有關(guān)物理實(shí)現(xiàn)的細(xì)節(jié),因此,絕大多數(shù)用戶都可以理解和評價(jià)它。和評價(jià)它。 數(shù)據(jù)流圖的另一個(gè)主要用途是作為分析和設(shè)計(jì)的工數(shù)據(jù)流圖的另一個(gè)主要用途是作為分析和設(shè)計(jì)的工具。具。 動(dòng)態(tài)模型表示瞬時(shí)的、行為化的系統(tǒng)的動(dòng)態(tài)模型表示瞬時(shí)的、行為化的系統(tǒng)的“控制控制”性質(zhì),性質(zhì),它規(guī)定了對象模型中的對象的合法變化序列。它規(guī)定了對象模型中的對象的合法變化序列。 一旦建立起對象模型之后,就需要考察對象的動(dòng)態(tài)行一旦建立起對象模型之后,就需要考察對象的動(dòng)態(tài)行為。生命周期中的階段也就是對象的狀態(tài)。所謂狀態(tài),是為。生命周期中的階段也就

48、是對象的狀態(tài)。所謂狀態(tài),是對對象屬性值的一種抽象。當(dāng)然,在定義狀態(tài)時(shí)應(yīng)該忽略對對象屬性值的一種抽象。當(dāng)然,在定義狀態(tài)時(shí)應(yīng)該忽略那些不影響對象行為的屬性。各對象之間相互觸發(fā)(即作那些不影響對象行為的屬性。各對象之間相互觸發(fā)(即作用),就形成了一系列的狀態(tài)變化。我們把一個(gè)觸發(fā)行為用),就形成了一系列的狀態(tài)變化。我們把一個(gè)觸發(fā)行為稱作一個(gè)事件。對象對事件的響應(yīng),取決于接受該觸發(fā)的稱作一個(gè)事件。對象對事件的響應(yīng),取決于接受該觸發(fā)的對象當(dāng)時(shí)所處的狀態(tài),響應(yīng)包括改變自己的狀態(tài)或者又形對象當(dāng)時(shí)所處的狀態(tài),響應(yīng)包括改變自己的狀態(tài)或者又形成一個(gè)新的觸發(fā)行為。成一個(gè)新的觸發(fā)行為。13 13 動(dòng)動(dòng) 態(tài)態(tài) 模模 型型

49、13.1 13.1 概念概念 建立動(dòng)態(tài)模型時(shí)需要使用的一些基本概念:建立動(dòng)態(tài)模型時(shí)需要使用的一些基本概念:1. 1. 事件事件 事件是某個(gè)特定時(shí)刻所發(fā)生的事情,它是對引起對事件是某個(gè)特定時(shí)刻所發(fā)生的事情,它是對引起對象從一種狀態(tài)轉(zhuǎn)換到另一種狀態(tài)的現(xiàn)實(shí)世界中的事件的象從一種狀態(tài)轉(zhuǎn)換到另一種狀態(tài)的現(xiàn)實(shí)世界中的事件的抽象。事件沒有持續(xù)時(shí)間,是瞬間完成的。抽象。事件沒有持續(xù)時(shí)間,是瞬間完成的。 事件也就是信息從一個(gè)對象到另一個(gè)對象的單向傳事件也就是信息從一個(gè)對象到另一個(gè)對象的單向傳送。受此事件觸發(fā)的第二個(gè)對象,可以發(fā)送答復(fù)事件也送。受此事件觸發(fā)的第二個(gè)對象,可以發(fā)送答復(fù)事件也可以不發(fā)送答復(fù)事件,即使發(fā)

50、送答復(fù)事件,它也是受第可以不發(fā)送答復(fù)事件,即使發(fā)送答復(fù)事件,它也是受第二個(gè)對象控制的一個(gè)獨(dú)立事件。二個(gè)對象控制的一個(gè)獨(dú)立事件。 簡而言之,簡而言之,事件就是引起對象狀態(tài)轉(zhuǎn)換的控制信息事件就是引起對象狀態(tài)轉(zhuǎn)換的控制信息。2. 2. 狀態(tài)狀態(tài) 狀態(tài)就是對象在其生命周期中的某個(gè)特定階段所處的狀態(tài)就是對象在其生命周期中的某個(gè)特定階段所處的某種情形,它是對影響對象行為的屬性值的一種抽象。某種情形,它是對影響對象行為的屬性值的一種抽象。 狀態(tài)規(guī)定了對象對輸入事件的響應(yīng)方式。對象對事件狀態(tài)規(guī)定了對象對輸入事件的響應(yīng)方式。對象對事件的響應(yīng),既可以是作一個(gè)(或一系列)動(dòng)作,也可以是僅的響應(yīng),既可以是作一個(gè)(或一

51、系列)動(dòng)作,也可以是僅僅改變對象本身的狀態(tài)。僅改變對象本身的狀態(tài)。 狀態(tài)有持續(xù)性,它占用一段時(shí)間間隔。狀態(tài)與事件密狀態(tài)有持續(xù)性,它占用一段時(shí)間間隔。狀態(tài)與事件密不可分,一個(gè)事件分開兩個(gè)狀態(tài),一個(gè)狀態(tài)隔開兩個(gè)事件不可分,一個(gè)事件分開兩個(gè)狀態(tài),一個(gè)狀態(tài)隔開兩個(gè)事件。事件表示時(shí)刻,狀態(tài)代表時(shí)間間隔。事件表示時(shí)刻,狀態(tài)代表時(shí)間間隔。 在定義狀態(tài)的時(shí)候,應(yīng)該忽略那些不影響對象行為的在定義狀態(tài)的時(shí)候,應(yīng)該忽略那些不影響對象行為的屬性。屬性。3. 3. 行為行為 所謂行為,是指對象達(dá)到某種狀態(tài)時(shí)所做的一系所謂行為,是指對象達(dá)到某種狀態(tài)時(shí)所做的一系列處理操作。這些操作是需要耗費(fèi)時(shí)間的。列處理操作。這些操作是需

52、要耗費(fèi)時(shí)間的。13.2 13.2 圖示符號(hào)圖示符號(hào) 圖給出了狀態(tài)圖中使用的表示符號(hào)。圖給出了狀態(tài)圖中使用的表示符號(hào)。圖狀態(tài)圖中使用的表示符號(hào)3. 3. 舉例舉例 為了具體說明狀態(tài)圖的畫法,下面以大家熟悉的電為了具體說明狀態(tài)圖的畫法,下面以大家熟悉的電梯系統(tǒng)為例,畫出它的狀態(tài)圖,如圖所示。梯系統(tǒng)為例,畫出它的狀態(tài)圖,如圖所示。 電梯的狀態(tài)圖 在在“空閑空閑”狀態(tài),把狀態(tài)變量狀態(tài),把狀態(tài)變量timertimer的值置為的值置為0 0,然,然后連續(xù)遞增后連續(xù)遞增timertimer的值,直到的值,直到“上樓上樓”或或“下樓下樓”事件發(fā)事件發(fā)生或守衛(wèi)條件生或守衛(wèi)條件“timertimer超時(shí)值超時(shí)值”

53、為真,觸發(fā)狀態(tài)轉(zhuǎn)換。為真,觸發(fā)狀態(tài)轉(zhuǎn)換。注意,從注意,從“空閑空閑”狀態(tài)到狀態(tài)到“在第一層在第一層”狀態(tài)之間的狀態(tài)轉(zhuǎn)狀態(tài)之間的狀態(tài)轉(zhuǎn)換,有一個(gè)守衛(wèi)條件和一個(gè)動(dòng)作表達(dá)式,但沒有事件說明換,有一個(gè)守衛(wèi)條件和一個(gè)動(dòng)作表達(dá)式,但沒有事件說明。因此,只要守衛(wèi)條件。因此,只要守衛(wèi)條件“timertimer超時(shí)值超時(shí)值”為真,狀態(tài)轉(zhuǎn)為真,狀態(tài)轉(zhuǎn)換就發(fā)生,這時(shí)將執(zhí)行動(dòng)作換就發(fā)生,這時(shí)將執(zhí)行動(dòng)作“下樓(第一層)下樓(第一層)”,然后狀,然后狀態(tài)由態(tài)由“空閑空閑”轉(zhuǎn)變?yōu)檗D(zhuǎn)變?yōu)椤霸诘谝粚釉诘谝粚印?。字典字典字典是為字提供音韻、意思解釋、例句、用法等等的工具書。在西方,是沒有字典的概念,它是中國獨(dú)有的。 字典收字為主

54、,亦會(huì)收詞。詞典或辭典收詞為主,也會(huì)收字。字典的功能現(xiàn)代的字典都提供了很多功能,其中兩大功能分別是:以溝通為主,幫助對文字的理解、翻譯及五筆以知識(shí)為主,針對某事物來尋獲知識(shí)字典在黑客領(lǐng)域的含義字典在黑客領(lǐng)域的含義黑客破解方面的字典是指一個(gè)包含很多密碼的文本文件,黑客常用相關(guān)軟件生成包含很多密碼的字典文件,然后用軟件把字典中的密碼去不斷嘗試登陸,直到登陸成功。該過程被稱為暴力破解,或者叫窮舉。1414、數(shù)據(jù)字典、數(shù)據(jù)字典 定義:數(shù)據(jù)字典是描述與系統(tǒng)相關(guān)的信息的集合,定義:數(shù)據(jù)字典是描述與系統(tǒng)相關(guān)的信息的集合,是對系統(tǒng)中所有數(shù)據(jù)的定義的集合。是對系統(tǒng)中所有數(shù)據(jù)的定義的集合。 數(shù)據(jù)流圖描述系統(tǒng)的邏輯

55、模型,但它不可能表達(dá)一個(gè)系統(tǒng)的全部邏輯特性,特別是有關(guān)數(shù)據(jù)的詳細(xì)內(nèi)容。 數(shù)據(jù)字典恰恰彌補(bǔ)了數(shù)據(jù)流圖在這個(gè)方面的不足,它專門記錄有關(guān)數(shù)據(jù)方面的信息,作為對數(shù)據(jù)流圖的補(bǔ)充和解釋。 數(shù)據(jù)流圖和數(shù)據(jù)詞典共同構(gòu)成全面描述軟件需求說明書的核心。 數(shù)據(jù)字典要對數(shù)據(jù)流圖中出現(xiàn)的所有名字進(jìn)行定義。 同日常使用的詞典一樣,為了便于查閱,詞典中的所有條目都要按一定的次序排列起來,也可采用卡片的形式,以供開發(fā)與維護(hù)人員方便地使用。 數(shù)據(jù)字典的內(nèi)容主要包括:數(shù)據(jù)元素、數(shù)據(jù)流、數(shù)據(jù)存儲(chǔ)、外部項(xiàng)、加工處理等。按詞條形式描述數(shù)據(jù)的屬性、結(jié)構(gòu)、邏輯關(guān)系、特征信息等。14.2 14.2 定義數(shù)據(jù)的方法定義數(shù)據(jù)的方法 定義絕大多數(shù)

56、復(fù)雜事物的方法,都是用被定義事物成定義絕大多數(shù)復(fù)雜事物的方法,都是用被定義事物成分的某種組合表示這個(gè)事物,這些組成成分又由更低層的成分的某種組合表示這個(gè)事物,這些組成成分又由更低層的成分的組合來定義。分的組合來定義。 由數(shù)據(jù)元素組成數(shù)據(jù)的方式只有下述三種基本類型:由數(shù)據(jù)元素組成數(shù)據(jù)的方式只有下述三種基本類型: 順序順序 即以確定次序連接兩個(gè)或多個(gè)分量。即以確定次序連接兩個(gè)或多個(gè)分量。 選擇選擇 即從兩個(gè)或多個(gè)可能的元素中選取一個(gè)。即從兩個(gè)或多個(gè)可能的元素中選取一個(gè)。 重復(fù)重復(fù) 即把指定的分量重復(fù)零次或多次。即把指定的分量重復(fù)零次或多次。 可選可選 即一個(gè)分量是可有可無的(重復(fù)零次或一次)即一個(gè)

57、分量是可有可無的(重復(fù)零次或一次)。數(shù)據(jù)流定義中常用的符號(hào)含義如下: =表示“被定義為”; + 表示“和”,連接兩個(gè)或多個(gè)分量; .|. 表示“選擇”,即可選擇方括號(hào)中的一項(xiàng),用“|”作為各項(xiàng)的分割符; ( ) 表示“可選”,即括號(hào)內(nèi)的項(xiàng)可選可不選; mn表示“重復(fù)”,n為重復(fù)次數(shù)的上限,m為重復(fù)次數(shù)的下限,如重復(fù)次數(shù)沒有限定可不標(biāo)出上下限。也可以利用上下標(biāo)表示。 x = ab.,. 或或 .|. x =a,b,x=a|b . 或或 m.n x = a,x = 3a8(.) x = (a)“.” x = “a” . x = 1.914.3 14.3 數(shù)據(jù)字典的用途數(shù)據(jù)字典的用途 數(shù)據(jù)字典最重要的用途是作為分析階段的工具。在數(shù)據(jù)字典中建立的一組嚴(yán)密

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論