軟件需求工程講義第四講需求分析(1)_第1頁
軟件需求工程講義第四講需求分析(1)_第2頁
軟件需求工程講義第四講需求分析(1)_第3頁
軟件需求工程講義第四講需求分析(1)_第4頁
軟件需求工程講義第四講需求分析(1)_第5頁
已閱讀5頁,還剩68頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、第四講第四講 需求分析(需求分析(1 1)1第四講第四講 需求分析需求分析(1)(1) 需求分析需求分析(requirement analysis)包括提煉、包括提煉、分析和仔細(xì)審查已收集到的需求,以確保所有的風(fēng)分析和仔細(xì)審查已收集到的需求,以確保所有的風(fēng)險承擔(dān)者都明白其含義并找出其中的錯誤、遺漏或險承擔(dān)者都明白其含義并找出其中的錯誤、遺漏或其它不足的地方。分析員通過評價來確定是否所有其它不足的地方。分析員通過評價來確定是否所有的需求和軟件需求規(guī)格說明都達(dá)到了優(yōu)秀需求說明的需求和軟件需求規(guī)格說明都達(dá)到了優(yōu)秀需求說明的要求。分析的目的在于開發(fā)出高質(zhì)量和具體的需的要求。分析的目的在于開發(fā)出高質(zhì)量和

2、具體的需求,這樣就能作出實用的項目估算并可以進(jìn)行設(shè)計、求,這樣就能作出實用的項目估算并可以進(jìn)行設(shè)計、構(gòu)造和測試。構(gòu)造和測試。 需求分析主要是通過需求建模來實現(xiàn)。需求分析主要是通過需求建模來實現(xiàn)。2 領(lǐng)域的權(quán)威人士領(lǐng)域的權(quán)威人士Alan Davis認(rèn)為:沒有一種認(rèn)為:沒有一種單一的需求視圖能夠提供對需求的全面理解,必單一的需求視圖能夠提供對需求的全面理解,必須在需求中綜合使用文本和圖形表示法來完整地須在需求中綜合使用文本和圖形表示法來完整地描述所需開發(fā)的系統(tǒng)。描述所需開發(fā)的系統(tǒng)。 需求視圖包括功能性需求清單和表格、圖形需求視圖包括功能性需求清單和表格、圖形分析模型、用戶界面原型、測試用例、判定樹

3、和分析模型、用戶界面原型、測試用例、判定樹和判定表等。理想情況下,不同的人會創(chuàng)建出各種判定表等。理想情況下,不同的人會創(chuàng)建出各種不同的需求表示法,對其進(jìn)行比較和分析,就可不同的需求表示法,對其進(jìn)行比較和分析,就可以揭示出不一致性、歧義性、假設(shè)和遺漏問題。以揭示出不一致性、歧義性、假設(shè)和遺漏問題。 軟件需求的作者軟件需求的作者Karl E. Wiegers認(rèn)為:不認(rèn)為:不存在一個保羅萬象的模型圖或技術(shù),把所有內(nèi)容都包存在一個保羅萬象的模型圖或技術(shù),把所有內(nèi)容都包括到一個完整的系統(tǒng)需求描述中。括到一個完整的系統(tǒng)需求描述中。 結(jié)構(gòu)化結(jié)構(gòu)化系統(tǒng)系統(tǒng)分析分析的最初目標(biāo)是用比敘述文本更正的最初目標(biāo)是用比敘

4、述文本更正式的圖解和符號表示法,從整體上替換傳統(tǒng)的功能需式的圖解和符號表示法,從整體上替換傳統(tǒng)的功能需求規(guī)格說明。然而,經(jīng)驗表明,分析模型應(yīng)該是對用求規(guī)格說明。然而,經(jīng)驗表明,分析模型應(yīng)該是對用自然語言編寫的需求規(guī)格說明的補(bǔ)充完善,而不是替自然語言編寫的需求規(guī)格說明的補(bǔ)充完善,而不是替換。換。 直觀的需求模型包括數(shù)據(jù)流圖(直觀的需求模型包括數(shù)據(jù)流圖(DFD)、實體)、實體關(guān)系圖(關(guān)系圖(ERD)、狀態(tài)轉(zhuǎn)化圖(、狀態(tài)轉(zhuǎn)化圖(STD)或狀態(tài)圖、對話或狀態(tài)圖、對話圖、用例圖、類圖和活動圖。這些圖形表示法為項目圖、用例圖、類圖和活動圖。這些圖形表示法為項目參與者提供了可用的業(yè)界通用的標(biāo)準(zhǔn)語言。參與者提

5、供了可用的業(yè)界通用的標(biāo)準(zhǔn)語言。 通常,把需求中的一部分用多種形式來描述,如同時用通常,把需求中的一部分用多種形式來描述,如同時用文本和圖形來描述。分析這些不同的視圖將揭示出一些更深文本和圖形來描述。分析這些不同的視圖將揭示出一些更深的問題,這是單一視圖無法提供的。分析還包括與客戶的交的問題,這是單一視圖無法提供的。分析還包括與客戶的交流以澄清某些易混淆的問題,并明確哪些需求更為重要。其流以澄清某些易混淆的問題,并明確哪些需求更為重要。其目的是確保所有風(fēng)險承擔(dān)者盡早地對項目達(dá)成共識并對將來目的是確保所有風(fēng)險承擔(dān)者盡早地對項目達(dá)成共識并對將來的產(chǎn)品有個相同而清晰的認(rèn)識。的產(chǎn)品有個相同而清晰的認(rèn)識。

6、 需求分析中的主要任務(wù)包括:需求分析中的主要任務(wù)包括:l繪制系統(tǒng)關(guān)聯(lián)圖。繪制系統(tǒng)關(guān)聯(lián)圖。l建立數(shù)據(jù)字典。建立數(shù)據(jù)字典。l建立用戶界面(接口)原型建立用戶界面(接口)原型。l為需求建立模型。為需求建立模型。l確定需求優(yōu)先級。確定需求優(yōu)先級。5 系統(tǒng)關(guān)聯(lián)圖是用于定義系統(tǒng)與系統(tǒng)外部實體系統(tǒng)關(guān)聯(lián)圖是用于定義系統(tǒng)與系統(tǒng)外部實體間的界限和接口的簡單模型。同時它也明確了通間的界限和接口的簡單模型。同時它也明確了通過接口的信息流和物質(zhì)流。過接口的信息流和物質(zhì)流。 3.1 繪制系統(tǒng)關(guān)聯(lián)圖繪制系統(tǒng)關(guān)聯(lián)圖6 軟件項目范圍的描述劃清了正在開發(fā)的系統(tǒng)與軟件項目范圍的描述劃清了正在開發(fā)的系統(tǒng)與其他部分之間的界線。其他部分

7、之間的界線。 而關(guān)聯(lián)圖而關(guān)聯(lián)圖(Context diagram)通過正在開發(fā)的系通過正在開發(fā)的系統(tǒng)或正在討論的問題和外部世界之間的聯(lián)系來描述統(tǒng)或正在討論的問題和外部世界之間的聯(lián)系來描述這一界線。關(guān)聯(lián)圖確定了通過某一接口與系統(tǒng)相連這一界線。關(guān)聯(lián)圖確定了通過某一接口與系統(tǒng)相連的外部實體的外部實體(稱為稱為“端點端點”或或“外部實體外部實體”),同時,同時也確定了外部實體和系統(tǒng)之間的數(shù)據(jù)流和物流。也確定了外部實體和系統(tǒng)之間的數(shù)據(jù)流和物流。 通常把關(guān)聯(lián)圖作為按照結(jié)構(gòu)化分析所形成的數(shù)通常把關(guān)聯(lián)圖作為按照結(jié)構(gòu)化分析所形成的數(shù)據(jù)流圖的最高抽象層??梢园殃P(guān)聯(lián)圖寫入項目視圖據(jù)流圖的最高抽象層??梢园殃P(guān)聯(lián)圖寫入項

8、目視圖和范圍文檔或軟件需求規(guī)格說明中,或者作為系統(tǒng)和范圍文檔或軟件需求規(guī)格說明中,或者作為系統(tǒng)數(shù)據(jù)流模型的一部分。數(shù)據(jù)流模型的一部分。 7 “化學(xué)制品跟蹤系統(tǒng)化學(xué)制品跟蹤系統(tǒng)”的簡單的關(guān)聯(lián)圖如圖的簡單的關(guān)聯(lián)圖如圖3.1所示。整個系統(tǒng)被描述成一個簡單的循環(huán),所以關(guān)所示。整個系統(tǒng)被描述成一個簡單的循環(huán),所以關(guān)聯(lián)圖并不明確提供系統(tǒng)的內(nèi)部過程和數(shù)據(jù)。關(guān)聯(lián)圖聯(lián)圖并不明確提供系統(tǒng)的內(nèi)部過程和數(shù)據(jù)。關(guān)聯(lián)圖中的流可以用信息中的流可以用信息(“化學(xué)制品請求化學(xué)制品請求”)或物理項或物理項(“化化學(xué)制品容器學(xué)制品容器”)來表示。以矩形圖示的端點可以表示來表示。以矩形圖示的端點可以表示用戶類用戶類(“藥劑師藥劑師”

9、)、組織、組織 (“采購部門采購部門”)或其它子或其它子系統(tǒng)系統(tǒng)(“培訓(xùn)用數(shù)據(jù)庫培訓(xùn)用數(shù)據(jù)庫”)。 8化學(xué)制品化學(xué)制品倉庫倉庫采購部門采購部門健康和安健康和安全部門全部門培訓(xùn)用數(shù)培訓(xùn)用數(shù)據(jù)庫據(jù)庫化學(xué)制品化學(xué)制品使用報告使用報告請求化學(xué)制品請求化學(xué)制品使用報告使用報告培訓(xùn)記錄培訓(xùn)記錄請求請求危險記錄危險記錄請求請求供貨商訂供貨商訂單狀態(tài)單狀態(tài)供貨商化學(xué)供貨商化學(xué)制品請求制品請求化學(xué)制品容器化學(xué)制品容器存貨清單報表存貨清單報表存貨清單請求存貨清單請求化學(xué)制品請求化學(xué)制品請求藥劑師藥劑師化學(xué)制品化學(xué)制品跟蹤系統(tǒng)跟蹤系統(tǒng)供貨商目供貨商目錄查詢錄查詢供貨商目供貨商目錄信息錄信息化學(xué)制化學(xué)制品請求品請求化

10、學(xué)制化學(xué)制品容器品容器圖圖3.1 化學(xué)制品跟蹤系統(tǒng)關(guān)聯(lián)圖化學(xué)制品跟蹤系統(tǒng)關(guān)聯(lián)圖9問題:為什么沒有把化學(xué)制品的供應(yīng)商作為一個端問題:為什么沒有把化學(xué)制品的供應(yīng)商作為一個端點放入關(guān)聯(lián)圖中?點放入關(guān)聯(lián)圖中? 事實上,公司總是發(fā)出購買化學(xué)制品的訂單給事實上,公司總是發(fā)出購買化學(xué)制品的訂單給化學(xué)制品供應(yīng)商,并從供應(yīng)商那里得到裝有化學(xué)制化學(xué)制品供應(yīng)商,并從供應(yīng)商那里得到裝有化學(xué)制品的容器和發(fā)票,而供應(yīng)商則得到支票。然而,這品的容器和發(fā)票,而供應(yīng)商則得到支票。然而,這些過程發(fā)生在些過程發(fā)生在“化學(xué)制品跟蹤系統(tǒng)化學(xué)制品跟蹤系統(tǒng)”范圍之外,并范圍之外,并作為購買和進(jìn)貨部門日常事務(wù)的一部分。作為購買和進(jìn)貨部門日常

11、事務(wù)的一部分。關(guān)聯(lián)圖明確告訴我們:系統(tǒng)并不直接與供應(yīng)商訂貨、關(guān)聯(lián)圖明確告訴我們:系統(tǒng)并不直接與供應(yīng)商訂貨、進(jìn)貨、或付賬。進(jìn)貨、或付賬。 實際工作中,雖然某些端點與所規(guī)劃的系統(tǒng)沒有實際工作中,雖然某些端點與所規(guī)劃的系統(tǒng)沒有直接聯(lián)系,但有時關(guān)聯(lián)圖將給出與項目的問題域有直接聯(lián)系,但有時關(guān)聯(lián)圖將給出與項目的問題域有關(guān)的端點之間的聯(lián)系。不是教條地去追求如何繪制關(guān)的端點之間的聯(lián)系。不是教條地去追求如何繪制“正確正確”的關(guān)聯(lián)圖,而是使用這樣的圖來確定項目的關(guān)聯(lián)圖,而是使用這樣的圖來確定項目內(nèi)部之間清晰而精確的關(guān)系。內(nèi)部之間清晰而精確的關(guān)系。103.2 創(chuàng)建用戶接口原型創(chuàng)建用戶接口原型 當(dāng)開發(fā)人員或用戶不能確

12、定需求時,開發(fā)一個用當(dāng)開發(fā)人員或用戶不能確定需求時,開發(fā)一個用戶接口原型戶接口原型一個可能的局部實現(xiàn)一個可能的局部實現(xiàn)這樣使得這樣使得許多概念和可能發(fā)生的事更為直觀明了。用戶通過許多概念和可能發(fā)生的事更為直觀明了。用戶通過評價原型將使項目參與者能更好地相互理解所要解評價原型將使項目參與者能更好地相互理解所要解決的問題。注意要找出需求文檔與原型之間所有的決的問題。注意要找出需求文檔與原型之間所有的沖突之處。沖突之處。 許多軟件開發(fā)組都曾有過這樣令人不悅的經(jīng)歷:許多軟件開發(fā)組都曾有過這樣令人不悅的經(jīng)歷:用戶以不適合為理由拒絕了他們開發(fā)的整個產(chǎn)品。用戶以不適合為理由拒絕了他們開發(fā)的整個產(chǎn)品。這主要是

13、由于在產(chǎn)品發(fā)布之前,用戶并沒有見過用這主要是由于在產(chǎn)品發(fā)布之前,用戶并沒有見過用戶界面,產(chǎn)品開發(fā)基本完成時他們發(fā)現(xiàn)界面和需求戶界面,產(chǎn)品開發(fā)基本完成時他們發(fā)現(xiàn)界面和需求中潛在的問題,從而產(chǎn)生不滿。中潛在的問題,從而產(chǎn)生不滿。11 軟件原型是一種技術(shù),可以利用這種技術(shù)減少客戶軟件原型是一種技術(shù),可以利用這種技術(shù)減少客戶對產(chǎn)品不滿意的風(fēng)險。來自用戶的早期反饋可以使開發(fā)對產(chǎn)品不滿意的風(fēng)險。來自用戶的早期反饋可以使開發(fā)小組正確理解需求,并知道如何最好地實現(xiàn)這些需求。小組正確理解需求,并知道如何最好地實現(xiàn)這些需求。 即使你完成了需求獲取、分析和編寫規(guī)格說明,你即使你完成了需求獲取、分析和編寫規(guī)格說明,你

14、的需求中肯定還有一部分對客戶或開發(fā)者仍然不明確或的需求中肯定還有一部分對客戶或開發(fā)者仍然不明確或不清晰。如果不解決這些問題,那么必然在用戶產(chǎn)品視不清晰。如果不解決這些問題,那么必然在用戶產(chǎn)品視圖和開發(fā)者對于開發(fā)什么產(chǎn)品的理解之間存在期望差距。圖和開發(fā)者對于開發(fā)什么產(chǎn)品的理解之間存在期望差距。通過閱讀文本需求或研究分析模型,很難想象軟件產(chǎn)品通過閱讀文本需求或研究分析模型,很難想象軟件產(chǎn)品在特定的環(huán)境中如何運行。原型可以使新產(chǎn)品實在化,在特定的環(huán)境中如何運行。原型可以使新產(chǎn)品實在化,為使用實例帶來生機(jī),并消除在需求理解上的差異。比為使用實例帶來生機(jī),并消除在需求理解上的差異。比起閱讀一份冗長無味的

15、軟件需求規(guī)格說明,用戶通常更起閱讀一份冗長無味的軟件需求規(guī)格說明,用戶通常更愿意嘗試建立有趣的原型。愿意嘗試建立有趣的原型。12 原型有多種含義,并且參與建立原型的人可以原型有多種含義,并且參與建立原型的人可以有不同的期望。例如,一個飛機(jī)原型實際上可以飛有不同的期望。例如,一個飛機(jī)原型實際上可以飛翔翔它是真實飛機(jī)的雛形。相反,一個軟件原型它是真實飛機(jī)的雛形。相反,一個軟件原型通常僅僅是真實系統(tǒng)的一部分或一個模型,并且它通常僅僅是真實系統(tǒng)的一部分或一個模型,并且它可能根本不能完成任何有用的事。以下將研究各種可能根本不能完成任何有用的事。以下將研究各種類型的軟件原型、它們在需求開發(fā)中的應(yīng)用以及如類

16、型的軟件原型、它們在需求開發(fā)中的應(yīng)用以及如何使原型成為軟件開發(fā)過程中有效的組成部分。何使原型成為軟件開發(fā)過程中有效的組成部分。 13 3.2.1 什么什么是是原型原型和為什么要建立原型和為什么要建立原型軟件原型是所提出的新產(chǎn)品的部分實現(xiàn)或可能的實軟件原型是所提出的新產(chǎn)品的部分實現(xiàn)或可能的實現(xiàn)。使用原型有三個主要目的:現(xiàn)。使用原型有三個主要目的:l 明確并完善需求明確并完善需求: 原型作為一種需求工具,它是原型作為一種需求工具,它是對部分系統(tǒng)的初步實現(xiàn)。用戶對原型的評價可以指對部分系統(tǒng)的初步實現(xiàn)。用戶對原型的評價可以指出需求中存在的問題,在開發(fā)真正產(chǎn)品之前,可以出需求中存在的問題,在開發(fā)真正產(chǎn)品

17、之前,可以最低的費用來解決這些問題。最低的費用來解決這些問題。l 探索設(shè)計選擇方案探索設(shè)計選擇方案: 原型作為一種設(shè)計工具,用原型作為一種設(shè)計工具,用它可以探索不同的用戶界面技術(shù),使系統(tǒng)達(dá)到最佳它可以探索不同的用戶界面技術(shù),使系統(tǒng)達(dá)到最佳的易用性,并且可以評價可能的技術(shù)方案。的易用性,并且可以評價可能的技術(shù)方案。l 發(fā)展為最終的產(chǎn)品原型發(fā)展為最終的產(chǎn)品原型: 作為一種構(gòu)造工具,是作為一種構(gòu)造工具,是產(chǎn)品最初子集的完整功能實現(xiàn),通過一系列小規(guī)模產(chǎn)品最初子集的完整功能實現(xiàn),通過一系列小規(guī)模的開發(fā)循環(huán),你可以完成整個產(chǎn)品的開發(fā)。的開發(fā)循環(huán),你可以完成整個產(chǎn)品的開發(fā)。 14 建立原型的主要原因是為了解

18、決在產(chǎn)品開發(fā)的建立原型的主要原因是為了解決在產(chǎn)品開發(fā)的早期階段不確定的問題。利用這些不確定性來判斷早期階段不確定的問題。利用這些不確定性來判斷系統(tǒng)中哪一部分需要建立原型和希望從用戶對原型系統(tǒng)中哪一部分需要建立原型和希望從用戶對原型的評價中獲得什么。對于發(fā)現(xiàn)和解決需求中的二義的評價中獲得什么。對于發(fā)現(xiàn)和解決需求中的二義性,原型也是一種很好的方法。二義性和不完整性性,原型也是一種很好的方法。二義性和不完整性使開發(fā)者對所開發(fā)的產(chǎn)品產(chǎn)生困惑,建立一個原型使開發(fā)者對所開發(fā)的產(chǎn)品產(chǎn)生困惑,建立一個原型有助于說明和糾正這些不確定性。用戶、經(jīng)理和其有助于說明和糾正這些不確定性。用戶、經(jīng)理和其他非技術(shù)項目風(fēng)險承

19、擔(dān)者發(fā)現(xiàn)在確定和開發(fā)產(chǎn)品時,他非技術(shù)項目風(fēng)險承擔(dān)者發(fā)現(xiàn)在確定和開發(fā)產(chǎn)品時,原型可以使他們的想象更具體化。原型比開發(fā)者常原型可以使他們的想象更具體化。原型比開發(fā)者常用的技術(shù)術(shù)語更易于理解。用的技術(shù)術(shù)語更易于理解。 153.2.2 水平和垂直的原型水平和垂直的原型 當(dāng)人們談到當(dāng)人們談到“軟件原型軟件原型”時,他們所想到的通時,他們所想到的通常是可能的用戶界面的水平原型常是可能的用戶界面的水平原型 (horizontal prototype)。水平原型也叫做行為原型。水平原型也叫做行為原型(behavioral prototype)或演示模型或演示模型(mock-up)。它可以讓你探索。它可以讓你探

20、索預(yù)期系統(tǒng)的一些特定行為,并達(dá)到細(xì)化需求的目的。預(yù)期系統(tǒng)的一些特定行為,并達(dá)到細(xì)化需求的目的。當(dāng)用戶在考慮原型中所提出的功能可否使他們完成當(dāng)用戶在考慮原型中所提出的功能可否使他們完成各自的業(yè)務(wù)任務(wù)時,原型使用戶所探討的問題更加各自的業(yè)務(wù)任務(wù)時,原型使用戶所探討的問題更加具體化。需要注意的是,這種原型中所提出的功能具體化。需要注意的是,這種原型中所提出的功能經(jīng)常并沒有真正地實現(xiàn)。經(jīng)常并沒有真正地實現(xiàn)。 一個水平原型就像一個電影集。它在屏幕上顯示一個水平原型就像一個電影集。它在屏幕上顯示出用戶界面的正面像,可能允許這些界面之間的一出用戶界面的正面像,可能允許這些界面之間的一些導(dǎo)航,但是它僅包含少量

21、的功能并沒有真正實現(xiàn)些導(dǎo)航,但是它僅包含少量的功能并沒有真正實現(xiàn)所有的功能。所有的功能。16 一個模型一個模型(mock-up)展示給用戶的是在原型化展示給用戶的是在原型化屏幕上可用的功能和導(dǎo)航選擇。有一些導(dǎo)航可能起屏幕上可用的功能和導(dǎo)航選擇。有一些導(dǎo)航可能起作用,但是用戶可能僅看到描述在那一點將真正顯作用,但是用戶可能僅看到描述在那一點將真正顯示的內(nèi)容的信息。數(shù)據(jù)庫查詢所響應(yīng)的信息是假的示的內(nèi)容的信息。數(shù)據(jù)庫查詢所響應(yīng)的信息是假的或者只是一個固定不變的信息,并且報表內(nèi)容也是或者只是一個固定不變的信息,并且報表內(nèi)容也是固定不變的。雖然原型看起來似乎可以執(zhí)行一些有固定不變的。雖然原型看起來似乎可

22、以執(zhí)行一些有意義的工作,但其實不然。這種模擬足以使用戶判意義的工作,但其實不然。這種模擬足以使用戶判斷是否有遺漏、錯誤或不必要的功能。原型代表了斷是否有遺漏、錯誤或不必要的功能。原型代表了開發(fā)者對于如何實現(xiàn)一個特定的使用實例的一種觀開發(fā)者對于如何實現(xiàn)一個特定的使用實例的一種觀念。用戶對原型的評價可以指出使用實例的可選過念。用戶對原型的評價可以指出使用實例的可選過程,遺漏的過程步驟,或原先沒有發(fā)現(xiàn)的異常情況。程,遺漏的過程步驟,或原先沒有發(fā)現(xiàn)的異常情況。17 當(dāng)你在相當(dāng)抽象的級別上建立原型時,用戶可當(dāng)你在相當(dāng)抽象的級別上建立原型時,用戶可以把注意力集中在需求和工作流問題上,而不會被以把注意力集中

23、在需求和工作流問題上,而不會被精細(xì)的外形或屏幕上元素的位置所干擾。在澄清了精細(xì)的外形或屏幕上元素的位置所干擾。在澄清了需求并確定了界面中的框架之后,你可以建立更詳需求并確定了界面中的框架之后,你可以建立更詳細(xì)的原型來探索用戶界面的設(shè)計。還可以使用不同細(xì)的原型來探索用戶界面的設(shè)計。還可以使用不同的屏幕設(shè)計工具或甚至使用紙和鉛筆來建立水平原的屏幕設(shè)計工具或甚至使用紙和鉛筆來建立水平原型。型。18 垂直原型垂直原型(vertical prototype),也叫做結(jié)構(gòu)化,也叫做結(jié)構(gòu)化原型或概念的證明,實現(xiàn)了一部分應(yīng)用功能。當(dāng)你原型或概念的證明,實現(xiàn)了一部分應(yīng)用功能。當(dāng)你不能確信所提出的構(gòu)造軟件的方法是

24、否完善或者當(dāng)不能確信所提出的構(gòu)造軟件的方法是否完善或者當(dāng)你需要優(yōu)化算法,評價一個數(shù)據(jù)庫的圖表或測試臨你需要優(yōu)化算法,評價一個數(shù)據(jù)庫的圖表或測試臨界時間需求時,你就要開發(fā)一個垂直原型。垂直原界時間需求時,你就要開發(fā)一個垂直原型。垂直原型通常用在生產(chǎn)運行環(huán)境中的生產(chǎn)工具構(gòu)造,使其型通常用在生產(chǎn)運行環(huán)境中的生產(chǎn)工具構(gòu)造,使其結(jié)果一目了然結(jié)果一目了然(更有意義更有意義)。比起在軟件的需求開發(fā)。比起在軟件的需求開發(fā)階段,垂直原型更常用于軟件的設(shè)計階段以減少風(fēng)階段,垂直原型更常用于軟件的設(shè)計階段以減少風(fēng)險。險。 一個垂直原型只實現(xiàn)客戶一部分用戶界面和相應(yīng)一個垂直原型只實現(xiàn)客戶一部分用戶界面和相應(yīng)的服務(wù)器功

25、能,這可以使用戶評估所提出體系結(jié)構(gòu)的服務(wù)器功能,這可以使用戶評估所提出體系結(jié)構(gòu)的通信組件、性能和可靠性等。的通信組件、性能和可靠性等。193.2.3 拋棄型原型和進(jìn)化型原型拋棄型原型和進(jìn)化型原型 在構(gòu)造一個原型以前,需要充分與客戶交流,在構(gòu)造一個原型以前,需要充分與客戶交流,并作出一個明確的判斷,在評價原型以后,是拋棄并作出一個明確的判斷,在評價原型以后,是拋棄掉原型還是把該原型進(jìn)化為最終產(chǎn)品的一部分??傻粼瓦€是把該原型進(jìn)化為最終產(chǎn)品的一部分??梢越⒁粋€拋棄型原型以建立一個拋棄型原型(throwaway prototype)或或探索型原型探索型原型(exploratory prototyp

26、e)來回答這些問來回答這些問題,解決不確定性并提高需求質(zhì)量。拋棄型原型在題,解決不確定性并提高需求質(zhì)量。拋棄型原型在其達(dá)到預(yù)期目的以后將會被拋棄,所以應(yīng)以花最小其達(dá)到預(yù)期目的以后將會被拋棄,所以應(yīng)以花最小的代價盡快地建立該原型。如果在原型上付出的努的代價盡快地建立該原型。如果在原型上付出的努力越多,那么項目的參與者就越不愿意將它拋棄。力越多,那么項目的參與者就越不愿意將它拋棄。20 當(dāng)建立拋棄型原型時,一般忽略了很多具體的軟當(dāng)建立拋棄型原型時,一般忽略了很多具體的軟件構(gòu)造技術(shù)。而強(qiáng)調(diào)在健壯性、可靠性、件構(gòu)造技術(shù)。而強(qiáng)調(diào)在健壯性、可靠性、 性能和長性能和長期的可維護(hù)原則下迅速實現(xiàn)軟件并易于維護(hù)。

27、基于期的可維護(hù)原則下迅速實現(xiàn)軟件并易于維護(hù)?;谶@一原因,不能將拋棄型原型中的代碼移植到最終這一原因,不能將拋棄型原型中的代碼移植到最終的產(chǎn)品系統(tǒng)中,除非它達(dá)到產(chǎn)品質(zhì)量代碼的標(biāo)準(zhǔn),的產(chǎn)品系統(tǒng)中,除非它達(dá)到產(chǎn)品質(zhì)量代碼的標(biāo)準(zhǔn),否則,開發(fā)者和用戶將在軟件生存期中遭遇種種麻否則,開發(fā)者和用戶將在軟件生存期中遭遇種種麻煩。煩。 當(dāng)遇到需求中的不確定性、二義性、不完整性或當(dāng)遇到需求中的不確定性、二義性、不完整性或含糊性時,最合適的方法是建立拋棄式模型。開發(fā)含糊性時,最合適的方法是建立拋棄式模型。開發(fā)者需要解決這些問題以減少在繼續(xù)開發(fā)時存在的風(fēng)者需要解決這些問題以減少在繼續(xù)開發(fā)時存在的風(fēng)險。原型可幫助用戶

28、和開發(fā)者想象如何實現(xiàn)需求和險。原型可幫助用戶和開發(fā)者想象如何實現(xiàn)需求和可以發(fā)現(xiàn)需求中的漏洞。它還可以使用戶判斷出這可以發(fā)現(xiàn)需求中的漏洞。它還可以使用戶判斷出這些需求是否可以完成必要的業(yè)務(wù)過程。些需求是否可以完成必要的業(yè)務(wù)過程。 21圖圖3.2描述了在拋棄型原型的幫助下,從用戶描述了在拋棄型原型的幫助下,從用戶任務(wù)到詳細(xì)用戶界面設(shè)計的開發(fā)活動序列。任務(wù)到詳細(xì)用戶界面設(shè)計的開發(fā)活動序列。使用實例描述使用實例描述對話圖對話圖拋型原型拋型原型棄棄詳細(xì)用戶詳細(xì)用戶界面設(shè)計界面設(shè)計評價反饋評價反饋評價反饋評價反饋圖圖3.2 利用拋棄型原型從用戶任務(wù)界面設(shè)計的活動序列利用拋棄型原型從用戶任務(wù)界面設(shè)計的活動序

29、列22評價反饋評價反饋 每一個使用實例的描述包括了一系列操作和系每一個使用實例的描述包括了一系列操作和系統(tǒng)響應(yīng),這些可以用對話圖來建立模型以描述一種統(tǒng)響應(yīng),這些可以用對話圖來建立模型以描述一種可能的用戶界面機(jī)制。拋棄型原型把對話元素細(xì)化可能的用戶界面機(jī)制。拋棄型原型把對話元素細(xì)化為特定的屏幕顯示、菜單和對話框。當(dāng)用戶評價原為特定的屏幕顯示、菜單和對話框。當(dāng)用戶評價原型時,他們的反饋可能會引起使用實例描述的改變型時,他們的反饋可能會引起使用實例描述的改變(例如發(fā)現(xiàn)一個新的可選過程時例如發(fā)現(xiàn)一個新的可選過程時)并且也會引起相應(yīng)并且也會引起相應(yīng)對話圖的改變。一旦確定了需求并勾畫出屏幕的大對話圖的改變

30、。一旦確定了需求并勾畫出屏幕的大體布局,開發(fā)者就可以從最佳使用的角度設(shè)計每一體布局,開發(fā)者就可以從最佳使用的角度設(shè)計每一個用戶界面元素的細(xì)節(jié)。比起直接從使用實例的描個用戶界面元素的細(xì)節(jié)。比起直接從使用實例的描述跳躍到完整的用戶界面的實現(xiàn),然后在需求中發(fā)述跳躍到完整的用戶界面的實現(xiàn),然后在需求中發(fā)現(xiàn)重大錯誤,利用逐步求精的方法所花費的努力將現(xiàn)重大錯誤,利用逐步求精的方法所花費的努力將會更小。會更小。23與拋棄型原型相對應(yīng)的是進(jìn)化型原型與拋棄型原型相對應(yīng)的是進(jìn)化型原型(evolutionary prototype),在已經(jīng)清楚地定義了需求的情況下,在已經(jīng)清楚地定義了需求的情況下,進(jìn)化型原型為開發(fā)漸

31、增式產(chǎn)品提供了堅實的構(gòu)造基進(jìn)化型原型為開發(fā)漸增式產(chǎn)品提供了堅實的構(gòu)造基礎(chǔ)。進(jìn)化型原型是螺旋式軟件開發(fā)生存周期模型的礎(chǔ)。進(jìn)化型原型是螺旋式軟件開發(fā)生存周期模型的一部分,也是一些面向?qū)ο筌浖_發(fā)過程的一部分一部分,也是一些面向?qū)ο筌浖_發(fā)過程的一部分 。與拋棄型原型的快速、粗略的特點相比,進(jìn)化式模與拋棄型原型的快速、粗略的特點相比,進(jìn)化式模型一開始就必須具有健壯性和產(chǎn)品質(zhì)量級的代碼。型一開始就必須具有健壯性和產(chǎn)品質(zhì)量級的代碼。因此,對于描述相同的功能,建立進(jìn)化型原型比建因此,對于描述相同的功能,建立進(jìn)化型原型比建立拋棄型原型所花的時間要多。一個進(jìn)化型原型必立拋棄型原型所花的時間要多。一個進(jìn)化型原型

32、必須設(shè)計為易于升級和優(yōu)化的,因此,必須重視軟件須設(shè)計為易于升級和優(yōu)化的,因此,必須重視軟件系統(tǒng)性和完整性的設(shè)計原則。要達(dá)到進(jìn)化型原型的系統(tǒng)性和完整性的設(shè)計原則。要達(dá)到進(jìn)化型原型的質(zhì)量要求并沒有捷徑。質(zhì)量要求并沒有捷徑。24我們應(yīng)該考慮進(jìn)化型原型的第一次演變,因為它將我們應(yīng)該考慮進(jìn)化型原型的第一次演變,因為它將作為實現(xiàn)需求中易于理解和穩(wěn)定部分的試驗性版本。作為實現(xiàn)需求中易于理解和穩(wěn)定部分的試驗性版本。從測試和首次使用中獲得的信息將引起下一次軟件從測試和首次使用中獲得的信息將引起下一次軟件原型的更新,正是這樣不斷增長并更新,使軟件才原型的更新,正是這樣不斷增長并更新,使軟件才能從一系列進(jìn)化型原型發(fā)

33、展為實現(xiàn)最終完整的產(chǎn)品。能從一系列進(jìn)化型原型發(fā)展為實現(xiàn)最終完整的產(chǎn)品。這種原型提供了可以使用戶快速獲得有用功能的方這種原型提供了可以使用戶快速獲得有用功能的方法。法。 進(jìn)化式模型適用于進(jìn)化式模型適用于Web開發(fā)項目。在我曾經(jīng)主持開發(fā)項目。在我曾經(jīng)主持的一個的一個Web項目中,我們根據(jù)從使用實例分析中得項目中,我們根據(jù)從使用實例分析中得出的需求,建立了四個原型序列。許多用戶對每一出的需求,建立了四個原型序列。許多用戶對每一個原型進(jìn)行了評價,根據(jù)他們對我們提出的問題的個原型進(jìn)行了評價,根據(jù)他們對我們提出的問題的回答,我們對原型進(jìn)行了修正。對第四個原型修改回答,我們對原型進(jìn)行了修正。對第四個原型修改

34、之后,產(chǎn)生了我們的之后,產(chǎn)生了我們的Web站點。站點。25 圖圖3.3描述了在軟件開發(fā)過程中,可以綜描述了在軟件開發(fā)過程中,可以綜合使用多種原型的許多方法。例如,可以利用合使用多種原型的許多方法。例如,可以利用從一系列拋棄型原型中獲得的知識來精化需求,從一系列拋棄型原型中獲得的知識來精化需求,然后,通過一個進(jìn)化型原型序列,可以漸增式然后,通過一個進(jìn)化型原型序列,可以漸增式地實現(xiàn)需求。貫穿圖地實現(xiàn)需求。貫穿圖3.3的一條可選路徑在最的一條可選路徑在最終設(shè)計用戶界面之前,將使用拋棄式水平原型終設(shè)計用戶界面之前,將使用拋棄式水平原型澄清需求,而與之對應(yīng)的垂直原型則使核心應(yīng)澄清需求,而與之對應(yīng)的垂直原

35、型則使核心應(yīng)用程序算法有效。你所不能實現(xiàn)的是:把用程序算法有效。你所不能實現(xiàn)的是:把 個個拋棄型原型固有的低劣性轉(zhuǎn)化為產(chǎn)品系統(tǒng)所要拋棄型原型固有的低劣性轉(zhuǎn)化為產(chǎn)品系統(tǒng)所要求的可維護(hù)性和健壯性。求的可維護(hù)性和健壯性。26收集用戶需求收集用戶需求驗證和交付增量驗證和交付增量構(gòu)造演化式原型構(gòu)造演化式原型交付產(chǎn)品交付產(chǎn)品構(gòu)造垂直原型構(gòu)造垂直原型設(shè)計軟件結(jié)構(gòu)設(shè)計軟件結(jié)構(gòu)精化用戶需求精化用戶需求開發(fā)拋棄式開發(fā)拋棄式水平原型水平原型設(shè)計用戶界面設(shè)計用戶界面構(gòu)造和驗證產(chǎn)品構(gòu)造和驗證產(chǎn)品圖圖3.3 在軟件開發(fā)過程中使用的原形法的一些可能方法在軟件開發(fā)過程中使用的原形法的一些可能方法27表表3.1 軟件原型的典型

36、應(yīng)用軟件原型的典型應(yīng)用表表3.1總結(jié)了拋棄式、演化式、水平和垂直原型的一些總結(jié)了拋棄式、演化式、水平和垂直原型的一些典型應(yīng)用。典型應(yīng)用。283.2.4 書面原型和電子原型書面原型和電子原型 在許多情況下,一個可執(zhí)行的原型未必可以獲取所需的在許多情況下,一個可執(zhí)行的原型未必可以獲取所需的用于解決關(guān)于需求不確定性的信息。書面原型用于解決關(guān)于需求不確定性的信息。書面原型(paper prototype) (有時也叫低保真原型有時也叫低保真原型)是一種廉價、快速并且不是一種廉價、快速并且不涉及高技術(shù)的方法,它可以把一個系統(tǒng)某部分是如何實現(xiàn)的涉及高技術(shù)的方法,它可以把一個系統(tǒng)某部分是如何實現(xiàn)的呈現(xiàn)在用戶

37、面前。書面原型有助于判斷用戶和開發(fā)者在需求呈現(xiàn)在用戶面前。書面原型有助于判斷用戶和開發(fā)者在需求上是否達(dá)成共識。他們可以使你在開發(fā)產(chǎn)品代碼前,對各種上是否達(dá)成共識。他們可以使你在開發(fā)產(chǎn)品代碼前,對各種可能的解決方案進(jìn)行試驗性的并且低風(fēng)險的嘗試。可能的解決方案進(jìn)行試驗性的并且低風(fēng)險的嘗試。 書面原型所包括的工具僅僅是紙張、索引卡、粘貼紙、塑書面原型所包括的工具僅僅是紙張、索引卡、粘貼紙、塑料板、白板和標(biāo)記器。你可以對屏幕布局進(jìn)行構(gòu)思,而并不料板、白板和標(biāo)記器。你可以對屏幕布局進(jìn)行構(gòu)思,而并不必關(guān)心那些按鈕和小裝飾物應(yīng)該出現(xiàn)在什么位置上。用戶愿必關(guān)心那些按鈕和小裝飾物應(yīng)該出現(xiàn)在什么位置上。用戶愿意提

38、供反饋,這將引起多頁書面原型極充分的改變。有時,意提供反饋,這將引起多頁書面原型極充分的改變。有時,他們并不急于評論一個基于計算機(jī)的可愛的原型,因為該原他們并不急于評論一個基于計算機(jī)的可愛的原型,因為該原型凝結(jié)了開發(fā)者的許多辛勞。開發(fā)者也是經(jīng)常不愿意對精心型凝結(jié)了開發(fā)者的許多辛勞。開發(fā)者也是經(jīng)常不愿意對精心制作的電子原型制作的電子原型(electronic prototype)做重大更改。做重大更改。29 有了有了“低保真低保真”原型,當(dāng)用戶評價原型時,一個人可以原型,當(dāng)用戶評價原型時,一個人可以充當(dāng)計算機(jī)的角色。用戶最初的動作是高呼他想在特定的屏充當(dāng)計算機(jī)的角色。用戶最初的動作是高呼他想在特

39、定的屏幕上做什么:幕上做什么:“我需要在我需要在File菜單中選擇菜單中選擇PrintPreview選項。選項?!碑?dāng)用戶進(jìn)行這一當(dāng)用戶進(jìn)行這一“操作操作”時,模仿計算機(jī)的人就會把關(guān)于顯時,模仿計算機(jī)的人就會把關(guān)于顯示方面的紙張和索引卡給用戶看。用戶就可以判斷這些界面示方面的紙張和索引卡給用戶看。用戶就可以判斷這些界面是否是所期望的響應(yīng),并且還可以判斷所顯示的項是否正確。是否是所期望的響應(yīng),并且還可以判斷所顯示的項是否正確。如果有錯誤,只要用一張新紙或索引卡,重畫一張就可以了。如果有錯誤,只要用一張新紙或索引卡,重畫一張就可以了。 不管你建立原型的工具多么高效,在紙張上勾畫界面是不管你建立原型的

40、工具多么高效,在紙張上勾畫界面是最快的。書面原型方便了原型的快速反復(fù)性,而在需求開發(fā)最快的。書面原型方便了原型的快速反復(fù)性,而在需求開發(fā)中反復(fù)性是一個關(guān)鍵的成功因素。在運用自動化工具建立詳中反復(fù)性是一個關(guān)鍵的成功因素。在運用自動化工具建立詳細(xì)用戶界面原型,構(gòu)造一個進(jìn)化型原型或者從事傳統(tǒng)設(shè)計和細(xì)用戶界面原型,構(gòu)造一個進(jìn)化型原型或者從事傳統(tǒng)設(shè)計和構(gòu)造活動之前,書面原型對于精化需求是一種優(yōu)秀的技術(shù),構(gòu)造活動之前,書面原型對于精化需求是一種優(yōu)秀的技術(shù),它還提供了一個管理客戶期望的有用工具。它還提供了一個管理客戶期望的有用工具。30 如果你決定建立一個電子拋棄型原型,那么就有許多工如果你決定建立一個電子

41、拋棄型原型,那么就有許多工具可以使用。這些工具包括:具可以使用。這些工具包括:l 編程語言,例如:編程語言,例如:Microsoft Visual Basic,IBM VisualAge Smalltalk和和Inprise Delphil 腳本語言,腳本語言,l 商品原型制作商品原型制作 工具包、屏幕繪圖器和圖形用戶界面生成器。工具包、屏幕繪圖器和圖形用戶界面生成器。 基于基于Web使用可以快速修改的使用可以快速修改的HTML頁頁(超文本標(biāo)注語言超文本標(biāo)注語言),它對于建立澄清需求而不去探索特定的用戶界面設(shè)計的原型它對于建立澄清需求而不去探索特定的用戶界面設(shè)計的原型是很有用的。合適的工具可以

42、使你迅速地實現(xiàn)并更改用戶界是很有用的。合適的工具可以使你迅速地實現(xiàn)并更改用戶界面組件,而不管在界面后面的代碼效率的高低。當(dāng)然,如果面組件,而不管在界面后面的代碼效率的高低。當(dāng)然,如果你正在建立一個演化式模型,那么你必須一開始就使用產(chǎn)品你正在建立一個演化式模型,那么你必須一開始就使用產(chǎn)品開發(fā)工具。開發(fā)工具。313.2.5 原型評價原型評價 通過建立腳本使用戶遵從一系列步驟并且回答一些特定通過建立腳本使用戶遵從一系列步驟并且回答一些特定的問題以獲取所需要的信息,這樣你可以提高原型評價的有的問題以獲取所需要的信息,這樣你可以提高原型評價的有效性。這些活動是對一般的詢問效性。這些活動是對一般的詢問“告

43、訴我,你對這個原型的告訴我,你對這個原型的看法如何看法如何”的有價值的補(bǔ)充。你可以從使用實例和原型描述的有價值的補(bǔ)充。你可以從使用實例和原型描述的功能中獲得評價腳本。這一腳本可以讓用戶執(zhí)行特定的任的功能中獲得評價腳本。這一腳本可以讓用戶執(zhí)行特定的任務(wù)并且指導(dǎo)他們評價你覺得最不確定的原型部分。在每個任務(wù)并且指導(dǎo)他們評價你覺得最不確定的原型部分。在每個任務(wù)之后,腳本將為評價者提供特定的與任務(wù)有關(guān)的問題。務(wù)之后,腳本將為評價者提供特定的與任務(wù)有關(guān)的問題。 l 這個原型所實現(xiàn)的功能與你所期望的一致嗎這個原型所實現(xiàn)的功能與你所期望的一致嗎?l 有遺漏的功能嗎有遺漏的功能嗎?l 你能考慮一下這個原型所沒涉

44、及的一些出錯情況嗎你能考慮一下這個原型所沒涉及的一些出錯情況嗎? l 有多余的功能嗎有多余的功能嗎?l 這些導(dǎo)航對于你意味著怎樣的邏輯性和完整性這些導(dǎo)航對于你意味著怎樣的邏輯性和完整性?l 有更簡單的方法來完成這一任務(wù)嗎有更簡單的方法來完成這一任務(wù)嗎?321)務(wù)必讓一些合適的人從恰當(dāng)?shù)慕嵌仍u價原型。)務(wù)必讓一些合適的人從恰當(dāng)?shù)慕嵌仍u價原型。l 原型的評價者必須是所期望的用戶群的代表。原型的評價者必須是所期望的用戶群的代表。l 評價組必須從使用原型中功能的用戶類里挑選出具評價組必須從使用原型中功能的用戶類里挑選出具有經(jīng)驗和經(jīng)驗不足的用戶。有經(jīng)驗和經(jīng)驗不足的用戶。l 在把原型呈遞給評價者時,應(yīng)注意

45、原型不包括要在在把原型呈遞給評價者時,應(yīng)注意原型不包括要在以后真正產(chǎn)品開發(fā)中實現(xiàn)的所有的業(yè)務(wù)邏輯。以后真正產(chǎn)品開發(fā)中實現(xiàn)的所有的業(yè)務(wù)邏輯。 2)由于用戶界面原型可用性的正式測試工作量龐大,)由于用戶界面原型可用性的正式測試工作量龐大,所以除了讓用戶自己評價原型然后把他們的想法告訴你所以除了讓用戶自己評價原型然后把他們的想法告訴你以外,通過實際觀察用戶使用原型以獲得更多的信息。以外,通過實際觀察用戶使用原型以獲得更多的信息。l 要注意用戶所指出那些原型部分。要注意用戶所指出那些原型部分。l 善于發(fā)現(xiàn)與原型的方法相沖突的用戶所習(xí)慣的應(yīng)用善于發(fā)現(xiàn)與原型的方法相沖突的用戶所習(xí)慣的應(yīng)用程序的操作規(guī)范。程

46、序的操作規(guī)范。 l尋找那些有疑惑的用戶,他們不知道該如何做才能達(dá)尋找那些有疑惑的用戶,他們不知道該如何做才能達(dá)到滿意的程度。到滿意的程度。33l當(dāng)用戶在評價原型時,讓用戶盡量把自己的想法大膽地講出當(dāng)用戶在評價原型時,讓用戶盡量把自己的想法大膽地講出來,這樣才能真正理解他們想什么,并且能夠發(fā)現(xiàn)原型表示的來,這樣才能真正理解他們想什么,并且能夠發(fā)現(xiàn)原型表示的不合理的需求部分。努力創(chuàng)造一個公平的環(huán)境,這樣可使評價不合理的需求部分。努力創(chuàng)造一個公平的環(huán)境,這樣可使評價者暢所欲言,表達(dá)他們的想法和所關(guān)心的事物,要避免用戶在者暢所欲言,表達(dá)他們的想法和所關(guān)心的事物,要避免用戶在評價原型時誘導(dǎo)用戶用設(shè)計好的

47、特定方法執(zhí)行一些功能。評價原型時誘導(dǎo)用戶用設(shè)計好的特定方法執(zhí)行一些功能。3)把從原型評價中獲得的信息編寫成文檔。)把從原型評價中獲得的信息編寫成文檔。l對于一個水平原型,用所收集的信息精化軟件需求規(guī)格說明對于一個水平原型,用所收集的信息精化軟件需求規(guī)格說明中的需求。中的需求。l如果原型評價得出一些用戶界面設(shè)計的決策或者特定交互技如果原型評價得出一些用戶界面設(shè)計的決策或者特定交互技術(shù)的選擇,那么把這些結(jié)論和你如何實現(xiàn)都記錄下來。術(shù)的選擇,那么把這些結(jié)論和你如何實現(xiàn)都記錄下來。l沒有用戶參與決策,分析者就必須不斷地回溯,將造成不必沒有用戶參與決策,分析者就必須不斷地回溯,將造成不必要的時間浪費。要

48、的時間浪費。l對于一個垂直原型,記錄好所實施的評價以及評價結(jié)果,從對于一個垂直原型,記錄好所實施的評價以及評價結(jié)果,從而做出關(guān)于所探索的不同技術(shù)方法可行性的決策。而做出關(guān)于所探索的不同技術(shù)方法可行性的決策。343.2.6 原型法的最大風(fēng)險原型法的最大風(fēng)險原型法是一種減少軟件項目失敗風(fēng)險的技術(shù)。然而,原原型法是一種減少軟件項目失敗風(fēng)險的技術(shù)。然而,原型法又引入了自身的風(fēng)險。最大的風(fēng)險是用戶或者經(jīng)理型法又引入了自身的風(fēng)險。最大的風(fēng)險是用戶或者經(jīng)理看到一個正在運行的原型從而以為產(chǎn)品即將完成??吹揭粋€正在運行的原型從而以為產(chǎn)品即將完成。l如果你正在演示或評價一個拋棄型原型,無論它與真如果你正在演示或評

49、價一個拋棄型原型,無論它與真正的產(chǎn)品是如何相像,它決不會達(dá)到產(chǎn)品的使用程度:正的產(chǎn)品是如何相像,它決不會達(dá)到產(chǎn)品的使用程度:l它僅是一個模型,一種模擬或一次實驗。它僅是一個模型,一種模擬或一次實驗。l處理風(fēng)險承擔(dān)者的期望是成功原型法的一個關(guān)鍵因素,處理風(fēng)險承擔(dān)者的期望是成功原型法的一個關(guān)鍵因素,因此要保證那些見到原型的人理解為什么要建立原型并因此要保證那些見到原型的人理解為什么要建立原型并且怎樣建立原型。且怎樣建立原型。l決不能把拋棄型原型當(dāng)作可交付的產(chǎn)品。由于原型在決不能把拋棄型原型當(dāng)作可交付的產(chǎn)品。由于原型在設(shè)計和編碼中并沒有考慮到軟件質(zhì)量和容錯性,因此交設(shè)計和編碼中并沒有考慮到軟件質(zhì)量和

50、容錯性,因此交付原型可導(dǎo)致項目的延期完成。付原型可導(dǎo)致項目的延期完成。35 不要因為害怕提交不成熟產(chǎn)品而阻礙建立原型,必不要因為害怕提交不成熟產(chǎn)品而阻礙建立原型,必須讓用戶明白你不會交付原型,甚至不會將它稱之為須讓用戶明白你不會交付原型,甚至不會將它稱之為軟件??刂七@種風(fēng)險的一種方法是利用書面原型而不軟件??刂七@種風(fēng)險的一種方法是利用書面原型而不是電子原型。評價書面原型的人決不會誤認(rèn)為產(chǎn)品已是電子原型。評價書面原型的人決不會誤認(rèn)為產(chǎn)品已經(jīng)完成開發(fā)并可以交付了。另一種可能的方法是使用經(jīng)完成開發(fā)并可以交付了。另一種可能的方法是使用不同于在真正開發(fā)時所用的原型法工具,這將有助于不同于在真正開發(fā)時所用

51、的原型法工具,這將有助于你抵抗你抵抗“已完成已完成原型開發(fā)并可把它當(dāng)作產(chǎn)品交付原型開發(fā)并可把它當(dāng)作產(chǎn)品交付的壓力。的壓力。 在原型評價期間,繼續(xù)處理那些期望。如果評價者在原型評價期間,繼續(xù)處理那些期望。如果評價者看到原型可以對一個模擬的數(shù)據(jù)庫查詢響應(yīng)甚快,那看到原型可以對一個模擬的數(shù)據(jù)庫查詢響應(yīng)甚快,那么他們可能期望在最終的軟件產(chǎn)品中也具有同樣驚人么他們可能期望在最終的軟件產(chǎn)品中也具有同樣驚人的性能。在對最終產(chǎn)品的行為進(jìn)行模擬時,要考慮現(xiàn)的性能。在對最終產(chǎn)品的行為進(jìn)行模擬時,要考慮現(xiàn)實中的時間延遲實中的時間延遲(這可以使原型不易被看作可即將交付這可以使原型不易被看作可即將交付的產(chǎn)品的產(chǎn)品)。

52、36 3.2.7 原型法成功的因素原型法成功的因素 軟件原型法提供了一套強(qiáng)有力的技術(shù),它可以縮短開發(fā)軟件原型法提供了一套強(qiáng)有力的技術(shù),它可以縮短開發(fā)進(jìn)度,增加用戶的滿意程度,生產(chǎn)出高質(zhì)量的產(chǎn)品并且可以進(jìn)度,增加用戶的滿意程度,生產(chǎn)出高質(zhì)量的產(chǎn)品并且可以減少需求錯誤和用戶界面的缺陷。為了幫助開發(fā)者在需求開減少需求錯誤和用戶界面的缺陷。為了幫助開發(fā)者在需求開發(fā)過程中建立有效的原型,請遵循如下原則:發(fā)過程中建立有效的原型,請遵循如下原則:l 項目計劃中應(yīng)包括原型風(fēng)險。安排好開發(fā)、評價和可能的項目計劃中應(yīng)包括原型風(fēng)險。安排好開發(fā)、評價和可能的修改原型的時間。修改原型的時間。l 計劃開發(fā)多個原型,因為你

53、很少能一次成功。計劃開發(fā)多個原型,因為你很少能一次成功。l 盡快并且廉價地建立拋棄型原型。用最少的投資開發(fā)那盡快并且廉價地建立拋棄型原型。用最少的投資開發(fā)那些用于回答問題和解決需求的不確定性的原型。不要努力去些用于回答問題和解決需求的不確定性的原型。不要努力去完善一個拋棄型原型的用戶界面。完善一個拋棄型原型的用戶界面。l 在拋棄型原型中不應(yīng)含有代碼注釋、輸入數(shù)據(jù)有效性檢在拋棄型原型中不應(yīng)含有代碼注釋、輸入數(shù)據(jù)有效性檢查、保護(hù)性編碼技術(shù),或者錯誤處理的代碼查、保護(hù)性編碼技術(shù),或者錯誤處理的代碼37l 對于已經(jīng)理解的需求不要建立原型。對于已經(jīng)理解的需求不要建立原型。l 不能隨意地增加功能。當(dāng)一個簡

54、單的拋棄型原型達(dá)到原型不能隨意地增加功能。當(dāng)一個簡單的拋棄型原型達(dá)到原型目的時,就不應(yīng)該隨便擴(kuò)充它的功能。目的時,就不應(yīng)該隨便擴(kuò)充它的功能。l 不要從水平原型的性能推測最終產(chǎn)品的性能。原型可能沒不要從水平原型的性能推測最終產(chǎn)品的性能。原型可能沒有運行在最終產(chǎn)品所處的特定環(huán)境中,并且你開發(fā)原型的有運行在最終產(chǎn)品所處的特定環(huán)境中,并且你開發(fā)原型的工具與開發(fā)產(chǎn)品的工具在效率上是存在差異的。工具與開發(fā)產(chǎn)品的工具在效率上是存在差異的。l 在原型屏幕顯示和報表中使用合理的模擬數(shù)據(jù)。那些評在原型屏幕顯示和報表中使用合理的模擬數(shù)據(jù)。那些評價原型的用戶會受不現(xiàn)實數(shù)據(jù)的影響而不能把原型看成真價原型的用戶會受不現(xiàn)實

55、數(shù)據(jù)的影響而不能把原型看成真正產(chǎn)品的模型。正產(chǎn)品的模型。l 不要期望原型可以代替需求文檔。原型只是暗示了許多后不要期望原型可以代替需求文檔。原型只是暗示了許多后臺功能,因此必須把這些功能寫入軟件需求規(guī)格說明,使臺功能,因此必須把這些功能寫入軟件需求規(guī)格說明,使之完善、詳細(xì)并且可以有案可稽。之完善、詳細(xì)并且可以有案可稽。 383.3 確定需求的優(yōu)先級別確定需求的優(yōu)先級別 應(yīng)用分析方法來確定使用實例、產(chǎn)品特性或單項應(yīng)用分析方法來確定使用實例、產(chǎn)品特性或單項需求實現(xiàn)的優(yōu)先級別。以優(yōu)先級為基礎(chǔ)確定產(chǎn)品版需求實現(xiàn)的優(yōu)先級別。以優(yōu)先級為基礎(chǔ)確定產(chǎn)品版本將包括哪些特性或哪類需求。當(dāng)允許需求變更時,本將包括哪

56、些特性或哪類需求。當(dāng)允許需求變更時,在特定的版本中加人每一項變更,并在那個版本計在特定的版本中加人每一項變更,并在那個版本計劃中作出需要的變更。劃中作出需要的變更。39本書中的例子:本書中的例子: 關(guān)于關(guān)于“化學(xué)制品跟蹤系統(tǒng)化學(xué)制品跟蹤系統(tǒng)”的大部分用戶需求編寫的大部分用戶需求編寫成文檔以后,項目經(jīng)理成文檔以后,項目經(jīng)理Dave和需求分析員和需求分析員Lori接見接見了兩個產(chǎn)品代表。了兩個產(chǎn)品代表。Tim代表了藥劑師群體,而代表了藥劑師群體,而Roxa-nne則代表了化學(xué)制品倉庫人員。則代表了化學(xué)制品倉庫人員。 “就像你們所親口道的那樣就像你們所親口道的那樣”,Dave開始說:開始說:“產(chǎn)品代

57、表為化學(xué)制品跟蹤系統(tǒng)收集了許多需求,產(chǎn)品代表為化學(xué)制品跟蹤系統(tǒng)收集了許多需求,但我們不能在產(chǎn)品的首發(fā)版中包含你們所需的全部但我們不能在產(chǎn)品的首發(fā)版中包含你們所需的全部功能。由于大部分需求來自藥劑師和化學(xué)制品倉庫,功能。由于大部分需求來自藥劑師和化學(xué)制品倉庫,所以我想與你們談一談關(guān)于設(shè)定需求優(yōu)先級的問所以我想與你們談一談關(guān)于設(shè)定需求優(yōu)先級的問題。題。” Tim感到很困惑。感到很困惑。“你為什么要設(shè)定需求優(yōu)先級你為什么要設(shè)定需求優(yōu)先級?它們?nèi)己苤匾?,否則我們不會向你們提出這些需它們?nèi)己苤匾?,否則我們不會向你們提出這些需求。求。” 40 Dave解釋說:解釋說:“我知道它們都很重要,但我們不我知

58、道它們都很重要,但我們不能做到同時交付一個包羅萬象并且具有高質(zhì)量的產(chǎn)能做到同時交付一個包羅萬象并且具有高質(zhì)量的產(chǎn)品。由于沒有更多的可用資源,所以我們需要為下品。由于沒有更多的可用資源,所以我們需要為下一季度末就要交付的產(chǎn)品確定最重要的需求。我們一季度末就要交付的產(chǎn)品確定最重要的需求。我們希望你們幫助我們把首發(fā)版中必須包括的需求與可希望你們幫助我們把首發(fā)版中必須包括的需求與可以放入以后版本的需求區(qū)分開。以放入以后版本的需求區(qū)分開?!?“我知道衛(wèi)生和安全辦公室已向政府提交的化學(xué)我知道衛(wèi)生和安全辦公室已向政府提交的化學(xué)制品使用和銷毀的報表必須在這個季度末完成制品使用和銷毀的報表必須在這個季度末完成”

59、, Roxanne 指出,指出,“如果有必要的話,我們可以多使如果有必要的話,我們可以多使用幾個月化學(xué)制品倉庫現(xiàn)行的存貨清單系統(tǒng)。但是用幾個月化學(xué)制品倉庫現(xiàn)行的存貨清單系統(tǒng)。但是條形碼標(biāo)簽和掃描功能是必須的,這比藥劑師所需條形碼標(biāo)簽和掃描功能是必須的,這比藥劑師所需的可查找的供應(yīng)商目錄更為重要。的可查找的供應(yīng)商目錄更為重要?!?1 Tim提出抗議:提出抗議:“我已向藥劑師保證,為他們提供我已向藥劑師保證,為他們提供在線的目錄查詢功能,在線的目錄查詢功能, 以節(jié)省他們的時間。所以以節(jié)省他們的時間。所以目錄查詢從項目剛開始就必須考慮目錄查詢從項目剛開始就必須考慮”。 分析員分析員Lori說:說:“

60、當(dāng)我與藥劑師共同探討使用實當(dāng)我與藥劑師共同探討使用實例時,有一些使用實例似乎經(jīng)常執(zhí)行而其它的則很例時,有一些使用實例似乎經(jīng)常執(zhí)行而其它的則很少有人使用。我們可以分析全部的使用實例,并確少有人使用。我們可以分析全部的使用實例,并確定那些你們不會馬上就用到的使用實例嗎!如果我定那些你們不會馬上就用到的使用實例嗎!如果我們可以這樣做,那么可以推遲決定那些高優(yōu)先級的們可以這樣做,那么可以推遲決定那些高優(yōu)先級的使用實例。使用實例。 對于必須等待系統(tǒng)部分功能的實現(xiàn),對于必須等待系統(tǒng)部分功能的實現(xiàn),Tim和和Rox-anne并沒有感到很驚訝。然而他們意識到如果開發(fā)并沒有感到很驚訝。然而他們意識到如果開發(fā)組不

溫馨提示

  • 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)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論