肖建芳
(汕頭職業(yè)技術(shù)學(xué)院計(jì)算機(jī)系,汕頭515041)
快速原型模型(Rapid Prototype Model)又稱為原型模型,是軟件開發(fā)模型中的重要開發(fā)模型之一,使用快速原型模型進(jìn)行的軟件開發(fā)方法稱為快速原型法??焖僭头ㄊ且环N以計(jì)算機(jī)為基礎(chǔ)的系統(tǒng)開發(fā)方法,它首先構(gòu)造一個(gè)功能簡單的原型系統(tǒng),然后通過對(duì)原型系統(tǒng)逐步求精,不斷擴(kuò)充完善得到最終的軟件系統(tǒng)。原型就是模型,而原型系統(tǒng)就是應(yīng)用系統(tǒng)的模型,它是待構(gòu)筑的實(shí)際系統(tǒng)的縮小比例模型,但是保留了實(shí)際系統(tǒng)的大部分性能。這個(gè)模型可在運(yùn)行中被檢查、測試、修改,直到它的性能達(dá)到用戶需求。
快速原型模型能更好地滿足用戶實(shí)際需求,縮短開發(fā)周期。要獲得更好的軟件質(zhì)量,必須從多方面考慮是否選用快速原型模型。
首先,從用戶需求方面考慮,如果用戶需求模糊,只有一個(gè)需求的大方向,尤其是對(duì)系統(tǒng)的詳細(xì)需求不明確或經(jīng)常更改需求,快速原型模型是能讓用戶盡快明確需求并滿意的首選。其次,從軟件邏輯結(jié)構(gòu)方面考慮,快速原型模型適用于擁有大量數(shù)據(jù)信息的管理信息系統(tǒng),不太適用于基于大量算法的系統(tǒng)。再次,從開發(fā)時(shí)間考慮,如果系統(tǒng)開發(fā)時(shí)間緊迫,或用戶急于看到可運(yùn)行系統(tǒng),快速原型模型也是首選,因?yàn)槟茏層脩舯M早體驗(yàn)系統(tǒng)原型。最后,從項(xiàng)目風(fēng)險(xiǎn)上考慮,如果是風(fēng)險(xiǎn)較大的項(xiàng)目,例如項(xiàng)目涉及較多新技術(shù)或市場前景具有較大風(fēng)險(xiǎn),宜選用快速原型模型盡早規(guī)避風(fēng)險(xiǎn)。
快速原型模型是對(duì)以文檔為驅(qū)動(dòng)的瀑布模型的強(qiáng)有力的補(bǔ)充,它的技術(shù)特點(diǎn)是不需要事先準(zhǔn)備各種開發(fā)文檔,并將用戶納入開發(fā)團(tuán)隊(duì),隨時(shí)與用戶保持溝通,能夠適應(yīng)用戶需求的變化,支持需求的漸進(jìn)式完善和確認(rèn),在需求復(fù)雜,動(dòng)態(tài)變化的軟件系統(tǒng)開發(fā)中尤其適用。
快速原型模型的核心思想是:在軟件開發(fā)的早期快速掌握核心需求,按需求快速開發(fā)一個(gè)可運(yùn)行的目標(biāo)系統(tǒng)軟件模型,讓用戶使用并提出修改意見,開發(fā)者根據(jù)用戶反饋進(jìn)行修改和完善后,再次交由用戶使用,直到用戶滿意則最終產(chǎn)品實(shí)現(xiàn)。原型的功能往往是最終軟件功能的一個(gè)子集。原型的主要作用是驗(yàn)證用戶的功能需求,在用戶使用后獲得用戶的真正需求。在系統(tǒng)概要設(shè)計(jì)和詳細(xì)設(shè)計(jì)的過程中,也可以用原型驗(yàn)證某些關(guān)鍵算法。快速原型模型的開發(fā)過程如圖1所示。
圖1 快速原型開發(fā)過程
學(xué)生選課系統(tǒng)從開始進(jìn)行需求分析到系統(tǒng)正式投入使用,時(shí)間跨度不到3 個(gè)月,教務(wù)部門對(duì)于系統(tǒng)的部分功能需求及細(xì)節(jié)不明確,快速原型模型成為該系統(tǒng)首選。在組建合理的開發(fā)團(tuán)隊(duì)后,使用快速原型模型開發(fā)學(xué)生選課系統(tǒng)分成以下步驟:快速需求分析并構(gòu)造原型、用戶測試原型并反饋、修改和完善原型系統(tǒng)。
該系統(tǒng)的開發(fā)團(tuán)隊(duì)由計(jì)算機(jī)系教師和相關(guān)教務(wù)人員組成,對(duì)學(xué)院的教學(xué)管理流程及學(xué)生選課系統(tǒng)的各種需求非常熟悉,開發(fā)人員能夠迅速獲得系統(tǒng)的核心需求并快速構(gòu)造出可用的系統(tǒng)初級(jí)原型,滿足了快速原型開發(fā)的前提。團(tuán)隊(duì)成員及任務(wù)分工如表1 所示。
表1 開發(fā)團(tuán)隊(duì)主要成員組成
該系統(tǒng)的開發(fā)團(tuán)隊(duì)是一個(gè)交流方便的團(tuán)隊(duì),所有成員都有開發(fā)者和用戶雙重身份,系統(tǒng)開發(fā)過程中,共同參與、相互交流共同完成系統(tǒng)的設(shè)計(jì)與開發(fā)。
學(xué)生選課系統(tǒng)集成了課程申請(qǐng)、審批、學(xué)生選課、選課結(jié)果統(tǒng)計(jì)、學(xué)生課程管理、成績上傳等多個(gè)功能模塊。根據(jù)權(quán)限設(shè)置,將系統(tǒng)劃分成三個(gè)子系統(tǒng):學(xué)生子系統(tǒng)、教師子系統(tǒng)和管理員子系統(tǒng)。
學(xué)生子系統(tǒng)主要功能模塊包括:個(gè)人信息管理、密碼修改、個(gè)人選課管理等。教師子系統(tǒng)主要功能模塊包括:個(gè)人信息管理、選課在線申請(qǐng)、選課成績管理、本人課程管理等,如圖2 所示[2]。
圖2 系統(tǒng)功能模塊設(shè)計(jì)圖
管理員子系統(tǒng)是系統(tǒng)最重要的部分,功能也比較多,功能模塊包括:校區(qū)管理、系別管理、專業(yè)管理、班級(jí)管理、教師管理、學(xué)生管理、選課申請(qǐng)管理、在選課程管理、班級(jí)選課管理等,現(xiàn)將管理員子系統(tǒng)的功能模塊單獨(dú)列出來,如圖3 所示[2]。
由于開發(fā)團(tuán)隊(duì)具有開發(fā)者和用戶的雙重身份,熟悉教學(xué)領(lǐng)域,主要開發(fā)者可以確定教師子系統(tǒng)的所有需求,經(jīng)過與相關(guān)教務(wù)人員及學(xué)生代表溝通后,可以明確學(xué)生子系統(tǒng)和管理員子系統(tǒng)的主要功能和絕大部分細(xì)節(jié)需求,從而可以快速開發(fā)出具有基本功能的初級(jí)系統(tǒng)原型模型。
該3×750 t/d垃圾焚燒發(fā)電廠設(shè)計(jì)厭氧進(jìn)水量800 m3/d。參照2018年1—6月該垃圾焚燒發(fā)電廠實(shí)際運(yùn)行數(shù)據(jù),滲瀝液原液、處理后濃縮液、沼氣產(chǎn)量、污泥產(chǎn)生量見表3。
系統(tǒng)在設(shè)計(jì)過程中采用快速原型模型,先了解系統(tǒng)核心功能及需求,開發(fā)出管理子系統(tǒng)的初步原型,移交教務(wù)人員測試并提出修改建議和新的需求,在此基礎(chǔ)上又開發(fā)出第二版已經(jīng)實(shí)現(xiàn)管理子系統(tǒng)基本功能的系統(tǒng)原型,再次移交教務(wù)人員測試使用,獲得測試反饋后繼續(xù)新版本原型的開發(fā),直到用戶對(duì)系統(tǒng)所有功能和操作都滿意就可以確定完成主體開發(fā)工作,進(jìn)入系統(tǒng)公開測試階段。下面以快速原型模型在學(xué)生選課功能模塊及班級(jí)管理模塊中的使用為例說明該方法的具體運(yùn)用。
(1)快速原型模型在學(xué)生選課功能模塊中的原型完善
系統(tǒng)模塊功能的細(xì)節(jié)在概要設(shè)計(jì)中往往被忽略,在詳細(xì)設(shè)計(jì)時(shí)原型就發(fā)揮出其優(yōu)勢。需求分析階段考慮不到的許多需求細(xì)節(jié),使用原型開發(fā)法進(jìn)行階段用戶測試時(shí)都被檢測出來。在學(xué)生子系統(tǒng)設(shè)計(jì)過程中,開發(fā)人員在掌握核心需求后,快速開發(fā)出子系統(tǒng)的初步原型并移交用戶測試。在學(xué)生子系統(tǒng)的“個(gè)人選課管理”功能模塊中,學(xué)生一開始被設(shè)定可以選擇任何已經(jīng)通過審批的課程。用戶(即教務(wù)管理人員)測試后提出需求:根據(jù)目前學(xué)院有異地多校區(qū)的實(shí)際情況,學(xué)生只能選擇所在校區(qū)的開課課程;開發(fā)人員根據(jù)反饋改進(jìn)原型后,用戶又提出新需求:選課時(shí)不同課程班級(jí)要有不同的人數(shù)限制(教師開班時(shí)需要設(shè)置學(xué)生人數(shù)的上限和下限);開發(fā)者根據(jù)反饋信息進(jìn)行修改,原型得到進(jìn)一步完善,用戶再次試用后又提出需求:學(xué)生選課數(shù)目要有限制,且需要為每門選課增加備注功能,學(xué)生參考備注進(jìn)行選課。于是在一輪一輪的原型修改中系統(tǒng)功能逐步完善。
(2)班級(jí)管理模塊中的原型完善
在管理員子系統(tǒng)的“班級(jí)管理”模塊中,使用增(in?sert)、刪(delete)、查(select)、改(update)等操作完成了基本功能完備的系統(tǒng)原型,用戶使用后給出要增加以班級(jí)為單位限制班級(jí)選課門數(shù)、管理人員按需設(shè)置班級(jí)選課權(quán)限等反饋,開發(fā)者修改原型并移交用戶使用后,用戶又提出增加在“班級(jí)管理”模塊中查看每個(gè)班級(jí)已經(jīng)選課學(xué)生人數(shù)及名單和未選課學(xué)生人數(shù)及名單功能的需求,開發(fā)者再次根據(jù)反饋完善系統(tǒng)。
原型就是在用戶一次次的反饋并根據(jù)反饋進(jìn)行完善后慢慢成熟,成為最終的功能完善、用戶滿意的系統(tǒng)。
針對(duì)用戶(教務(wù)管理人員、教師、學(xué)生)在試用過程中提出的反饋意見,開發(fā)人員迅速調(diào)整開發(fā)方案,對(duì)學(xué)生選課系統(tǒng)進(jìn)行修改和完善,生成最終的軟件產(chǎn)品交付用戶使用。
首先,快速建立的系統(tǒng)結(jié)構(gòu)加上連續(xù)的修改可能會(huì)導(dǎo)致產(chǎn)品質(zhì)量降低。因?yàn)橛脩魠⑴c開發(fā)過程并不時(shí)改變需求,過多的修改使程序容易出現(xiàn)Bug 從而導(dǎo)致產(chǎn)品質(zhì)量降低。當(dāng)然,開發(fā)人員通過完善跟蹤文檔可以盡量減少這種情況,例如學(xué)生選課系統(tǒng)在每個(gè)原型建立時(shí)都有相應(yīng)的文檔說明,有效降低了出現(xiàn)Bug 概率。其次,因?yàn)橛脩艨赡茈S時(shí)更改需求,導(dǎo)致開發(fā)人員的工作量大大增加。用戶每次需求的更改都需要對(duì)原型進(jìn)行修改,界面和功能都可能發(fā)生變化,代碼和數(shù)據(jù)庫都相應(yīng)要做出大量的修改。學(xué)生選課系統(tǒng)開發(fā)團(tuán)隊(duì)選擇了使用母版頁、助手類、存儲(chǔ)過程、采用面向?qū)ο蠹夹g(shù)等前沿技術(shù)從而大大減少了工作量。最后,需求變化導(dǎo)致的數(shù)據(jù)庫設(shè)計(jì)的變更給開發(fā)工作帶來很大的麻煩。鑒于此,開發(fā)人員選擇該開發(fā)方法時(shí)一定要注意揚(yáng)長避短,最大程度地發(fā)揮快速原型模型的優(yōu)勢。
使用快速原型模型開發(fā)產(chǎn)品的一個(gè)重要前提,就是要在盡量短時(shí)間內(nèi)構(gòu)造出原型。學(xué)生選課系統(tǒng)的開發(fā)團(tuán)隊(duì)比較熟悉教學(xué)領(lǐng)域,學(xué)生和教務(wù)管理人員意見反饋很及時(shí)準(zhǔn)確,對(duì)問題的定義一直比較準(zhǔn)確,所以原型完善得很快,也縮短了軟件開發(fā)周期。
快速原型模型適用在B/S 構(gòu)架上。B/S 構(gòu)架網(wǎng)站的一個(gè)網(wǎng)頁相當(dāng)于一個(gè)功能模塊,原型的建立相當(dāng)于發(fā)布相應(yīng)功能的網(wǎng)頁。.NET 和SQL Server 技術(shù)的無縫結(jié)合在快速構(gòu)造原型中也發(fā)揮了很大作用。為了提高頁面的執(zhí)行效率,選課系統(tǒng)使用了大量的存儲(chǔ)過程,存儲(chǔ)過程適用于模塊化的程序設(shè)計(jì),編譯一次可調(diào)用任意次,減少了網(wǎng)絡(luò)流量、提高了代碼執(zhí)行效率的同時(shí)也提升了系統(tǒng)的安全指數(shù)。