肖建芳
(汕頭職業技術學院計算機系,汕頭515041)
快速原型模型(Rapid Prototype Model)又稱為原型模型,是軟件開發模型中的重要開發模型之一,使用快速原型模型進行的軟件開發方法稱為快速原型法。快速原型法是一種以計算機為基礎的系統開發方法,它首先構造一個功能簡單的原型系統,然后通過對原型系統逐步求精,不斷擴充完善得到最終的軟件系統。原型就是模型,而原型系統就是應用系統的模型,它是待構筑的實際系統的縮小比例模型,但是保留了實際系統的大部分性能。這個模型可在運行中被檢查、測試、修改,直到它的性能達到用戶需求。
快速原型模型能更好地滿足用戶實際需求,縮短開發周期。要獲得更好的軟件質量,必須從多方面考慮是否選用快速原型模型。
首先,從用戶需求方面考慮,如果用戶需求模糊,只有一個需求的大方向,尤其是對系統的詳細需求不明確或經常更改需求,快速原型模型是能讓用戶盡快明確需求并滿意的首選。其次,從軟件邏輯結構方面考慮,快速原型模型適用于擁有大量數據信息的管理信息系統,不太適用于基于大量算法的系統。再次,從開發時間考慮,如果系統開發時間緊迫,或用戶急于看到可運行系統,快速原型模型也是首選,因為能讓用戶盡早體驗系統原型。最后,從項目風險上考慮,如果是風險較大的項目,例如項目涉及較多新技術或市場前景具有較大風險,宜選用快速原型模型盡早規避風險。
快速原型模型是對以文檔為驅動的瀑布模型的強有力的補充,它的技術特點是不需要事先準備各種開發文檔,并將用戶納入開發團隊,隨時與用戶保持溝通,能夠適應用戶需求的變化,支持需求的漸進式完善和確認,在需求復雜,動態變化的軟件系統開發中尤其適用。
快速原型模型的核心思想是:在軟件開發的早期快速掌握核心需求,按需求快速開發一個可運行的目標系統軟件模型,讓用戶使用并提出修改意見,開發者根據用戶反饋進行修改和完善后,再次交由用戶使用,直到用戶滿意則最終產品實現。原型的功能往往是最終軟件功能的一個子集。原型的主要作用是驗證用戶的功能需求,在用戶使用后獲得用戶的真正需求。在系統概要設計和詳細設計的過程中,也可以用原型驗證某些關鍵算法??焖僭湍P偷拈_發過程如圖1所示。

圖1 快速原型開發過程
學生選課系統從開始進行需求分析到系統正式投入使用,時間跨度不到3 個月,教務部門對于系統的部分功能需求及細節不明確,快速原型模型成為該系統首選。在組建合理的開發團隊后,使用快速原型模型開發學生選課系統分成以下步驟:快速需求分析并構造原型、用戶測試原型并反饋、修改和完善原型系統。
該系統的開發團隊由計算機系教師和相關教務人員組成,對學院的教學管理流程及學生選課系統的各種需求非常熟悉,開發人員能夠迅速獲得系統的核心需求并快速構造出可用的系統初級原型,滿足了快速原型開發的前提。團隊成員及任務分工如表1 所示。

表1 開發團隊主要成員組成
該系統的開發團隊是一個交流方便的團隊,所有成員都有開發者和用戶雙重身份,系統開發過程中,共同參與、相互交流共同完成系統的設計與開發。
學生選課系統集成了課程申請、審批、學生選課、選課結果統計、學生課程管理、成績上傳等多個功能模塊。根據權限設置,將系統劃分成三個子系統:學生子系統、教師子系統和管理員子系統。
學生子系統主要功能模塊包括:個人信息管理、密碼修改、個人選課管理等。教師子系統主要功能模塊包括:個人信息管理、選課在線申請、選課成績管理、本人課程管理等,如圖2 所示[2]。

圖2 系統功能模塊設計圖
管理員子系統是系統最重要的部分,功能也比較多,功能模塊包括:校區管理、系別管理、專業管理、班級管理、教師管理、學生管理、選課申請管理、在選課程管理、班級選課管理等,現將管理員子系統的功能模塊單獨列出來,如圖3 所示[2]。
由于開發團隊具有開發者和用戶的雙重身份,熟悉教學領域,主要開發者可以確定教師子系統的所有需求,經過與相關教務人員及學生代表溝通后,可以明確學生子系統和管理員子系統的主要功能和絕大部分細節需求,從而可以快速開發出具有基本功能的初級系統原型模型。
該3×750 t/d垃圾焚燒發電廠設計厭氧進水量800 m3/d。參照2018年1—6月該垃圾焚燒發電廠實際運行數據,滲瀝液原液、處理后濃縮液、沼氣產量、污泥產生量見表3。
系統在設計過程中采用快速原型模型,先了解系統核心功能及需求,開發出管理子系統的初步原型,移交教務人員測試并提出修改建議和新的需求,在此基礎上又開發出第二版已經實現管理子系統基本功能的系統原型,再次移交教務人員測試使用,獲得測試反饋后繼續新版本原型的開發,直到用戶對系統所有功能和操作都滿意就可以確定完成主體開發工作,進入系統公開測試階段。下面以快速原型模型在學生選課功能模塊及班級管理模塊中的使用為例說明該方法的具體運用。
(1)快速原型模型在學生選課功能模塊中的原型完善
系統模塊功能的細節在概要設計中往往被忽略,在詳細設計時原型就發揮出其優勢。需求分析階段考慮不到的許多需求細節,使用原型開發法進行階段用戶測試時都被檢測出來。在學生子系統設計過程中,開發人員在掌握核心需求后,快速開發出子系統的初步原型并移交用戶測試。在學生子系統的“個人選課管理”功能模塊中,學生一開始被設定可以選擇任何已經通過審批的課程。用戶(即教務管理人員)測試后提出需求:根據目前學院有異地多校區的實際情況,學生只能選擇所在校區的開課課程;開發人員根據反饋改進原型后,用戶又提出新需求:選課時不同課程班級要有不同的人數限制(教師開班時需要設置學生人數的上限和下限);開發者根據反饋信息進行修改,原型得到進一步完善,用戶再次試用后又提出需求:學生選課數目要有限制,且需要為每門選課增加備注功能,學生參考備注進行選課。于是在一輪一輪的原型修改中系統功能逐步完善。
(2)班級管理模塊中的原型完善
在管理員子系統的“班級管理”模塊中,使用增(in?sert)、刪(delete)、查(select)、改(update)等操作完成了基本功能完備的系統原型,用戶使用后給出要增加以班級為單位限制班級選課門數、管理人員按需設置班級選課權限等反饋,開發者修改原型并移交用戶使用后,用戶又提出增加在“班級管理”模塊中查看每個班級已經選課學生人數及名單和未選課學生人數及名單功能的需求,開發者再次根據反饋完善系統。
原型就是在用戶一次次的反饋并根據反饋進行完善后慢慢成熟,成為最終的功能完善、用戶滿意的系統。
針對用戶(教務管理人員、教師、學生)在試用過程中提出的反饋意見,開發人員迅速調整開發方案,對學生選課系統進行修改和完善,生成最終的軟件產品交付用戶使用。
首先,快速建立的系統結構加上連續的修改可能會導致產品質量降低。因為用戶參與開發過程并不時改變需求,過多的修改使程序容易出現Bug 從而導致產品質量降低。當然,開發人員通過完善跟蹤文檔可以盡量減少這種情況,例如學生選課系統在每個原型建立時都有相應的文檔說明,有效降低了出現Bug 概率。其次,因為用戶可能隨時更改需求,導致開發人員的工作量大大增加。用戶每次需求的更改都需要對原型進行修改,界面和功能都可能發生變化,代碼和數據庫都相應要做出大量的修改。學生選課系統開發團隊選擇了使用母版頁、助手類、存儲過程、采用面向對象技術等前沿技術從而大大減少了工作量。最后,需求變化導致的數據庫設計的變更給開發工作帶來很大的麻煩。鑒于此,開發人員選擇該開發方法時一定要注意揚長避短,最大程度地發揮快速原型模型的優勢。
使用快速原型模型開發產品的一個重要前提,就是要在盡量短時間內構造出原型。學生選課系統的開發團隊比較熟悉教學領域,學生和教務管理人員意見反饋很及時準確,對問題的定義一直比較準確,所以原型完善得很快,也縮短了軟件開發周期。
快速原型模型適用在B/S 構架上。B/S 構架網站的一個網頁相當于一個功能模塊,原型的建立相當于發布相應功能的網頁。.NET 和SQL Server 技術的無縫結合在快速構造原型中也發揮了很大作用。為了提高頁面的執行效率,選課系統使用了大量的存儲過程,存儲過程適用于模塊化的程序設計,編譯一次可調用任意次,減少了網絡流量、提高了代碼執行效率的同時也提升了系統的安全指數。