黃振華 劉翠煥 張波 張麗娟 張鵬絢 劉萌
【摘要】? ? 《軟件工程》是軟件工程專(zhuān)業(yè)的一門(mén)理論與實(shí)踐并重的核心課程?;赟imSE游戲的軟件工程過(guò)程與實(shí)踐教學(xué)的研究與應(yīng)用以滿(mǎn)足《軟件工程》的實(shí)戰(zhàn)化授課需求,也為后期軟件工程專(zhuān)業(yè)教學(xué)研究與實(shí)踐提供必要的支撐和參考。
【關(guān)鍵詞】? ? 軟件工程過(guò)程? ? SimSE? ? 模擬? ? 實(shí)訓(xùn)
引言:
《軟件工程》的實(shí)踐教學(xué)可以在項(xiàng)目計(jì)劃、需求分析、概要設(shè)計(jì)、詳細(xì)設(shè)計(jì)、編碼與測(cè)試、過(guò)程管理(溝通管理、需求管理、項(xiàng)目管理、人員培訓(xùn)、軟件過(guò)程改進(jìn)、風(fēng)險(xiǎn)管理以及收益管理等)各階段中使用模擬方法建立項(xiàng)目成員間一致的交流方式[1],以此提高學(xué)生的溝通分析能力、團(tuán)隊(duì)協(xié)作能力、撰寫(xiě)軟件開(kāi)發(fā)文檔能力。
SimSE模擬是軟件工程中單個(gè)操作者角色的教學(xué)模擬器,操作者扮演軟件開(kāi)發(fā)團(tuán)隊(duì)中相應(yīng)角色,按事先設(shè)定好的任務(wù)和實(shí)踐過(guò)程完成角色規(guī)定的工作任務(wù),提交相應(yīng)的工作成果。SimSE游戲軟件的圖形界面為虛擬辦公室和相關(guān)的項(xiàng)目信息,如需求文檔、設(shè)計(jì)文檔、開(kāi)發(fā)工具和代碼等,操作者可以利用管理知識(shí)和提示信息來(lái)作出管理決策,在一定時(shí)間和預(yù)算范圍內(nèi)完成項(xiàng)目的開(kāi)發(fā)[2]。SimSE游戲軟件的模型構(gòu)建器則是教師根據(jù)軟件項(xiàng)目開(kāi)發(fā)過(guò)程自行設(shè)計(jì)的實(shí)踐方案,便于學(xué)生可以以相應(yīng)角色進(jìn)行“游戲”模擬不同工作崗位的軟件項(xiàng)目職責(zé)。
本文研究以軟件工程過(guò)程為主線(xiàn),模擬真實(shí)軟件開(kāi)發(fā)過(guò)程和軟件項(xiàng)目管理,使學(xué)生在模擬過(guò)程中以不同角色完成規(guī)定工作和提交產(chǎn)品,并按規(guī)則給出評(píng)價(jià)分?jǐn)?shù)。
一、研究背景與意義
軟件工程是指導(dǎo)計(jì)算機(jī)軟件開(kāi)發(fā)和維護(hù)的一門(mén)工程學(xué)科,把經(jīng)過(guò)時(shí)間考驗(yàn)而證明正確的管理技術(shù)和當(dāng)前能夠得到的最好的技術(shù)方法結(jié)合起來(lái),以經(jīng)濟(jì)地開(kāi)發(fā)出高質(zhì)量的軟件并有效地維護(hù)[7]。基于軟件工程分階段生命周期的軟件過(guò)程,包括:瀑布模型、快速原型模型、增量模型、螺旋模型、噴泉模型、RUP、敏捷過(guò)程與極限編程等,其中定義了運(yùn)用方法的順序、應(yīng)該交付的文檔資料、質(zhì)量保證和協(xié)調(diào)變化的管理措施,以及各開(kāi)發(fā)階段任務(wù)完成的里程碑等細(xì)化內(nèi)容。
基于以上內(nèi)容,各高校軟件工程課程教學(xué)方法大致是基于案例或項(xiàng)目開(kāi)發(fā)的實(shí)踐與應(yīng)用講解、從不同角度把抽象的理論與方法具體化講授、適當(dāng)增加課堂實(shí)踐內(nèi)容及調(diào)整興趣度開(kāi)展教學(xué)、采用小組合作和模擬角色實(shí)施軟件開(kāi)發(fā)過(guò)程演練、以創(chuàng)新課程評(píng)價(jià)內(nèi)容和方法為目標(biāo)的激勵(lì)授課方法等。從教學(xué)、實(shí)踐和效果評(píng)價(jià)來(lái)看,都是以不同角度、不同力度和不同目標(biāo)為軟件工程教學(xué)總目標(biāo)服務(wù),具有一定的局限性。
以游戲形式的基于軟件工程開(kāi)發(fā)過(guò)程的模擬角色的教學(xué)實(shí)踐軟件平臺(tái)目前在國(guó)內(nèi)還沒(méi)有明確提出及實(shí)踐應(yīng)用。本文的研究即是從軟件工程課程教學(xué)目標(biāo)與實(shí)訓(xùn)需求出發(fā),依據(jù)軟件工程開(kāi)發(fā)過(guò)程理論指導(dǎo),研究基于角色的模擬真實(shí)軟件開(kāi)發(fā)場(chǎng)景的實(shí)訓(xùn)平臺(tái),解決軟件工程理論教學(xué)和實(shí)踐效果與真實(shí)軟件開(kāi)發(fā)與管理過(guò)程效果的不一致問(wèn)題,在滿(mǎn)足民辦高教實(shí)訓(xùn)需求方面是具有實(shí)用價(jià)值,也為后期軟件模擬平臺(tái)的開(kāi)發(fā)提供基礎(chǔ)設(shè)計(jì)參考。
二、實(shí)訓(xùn)平臺(tái)研究與設(shè)計(jì)
軟件工程實(shí)訓(xùn)模擬軟件系統(tǒng)功能包括:用戶(hù)注冊(cè)、角色選擇、規(guī)則制定、場(chǎng)景選擇、執(zhí)行過(guò)程監(jiān)控、檢查評(píng)價(jià)等,教師和學(xué)生均可使用瀏覽器通過(guò)互聯(lián)網(wǎng)進(jìn)行模擬實(shí)訓(xùn)。教師通過(guò)用戶(hù)注冊(cè)、規(guī)則制定、場(chǎng)景選擇、檢查評(píng)價(jià)等功能進(jìn)行基于軟件開(kāi)發(fā)模型的軟件開(kāi)發(fā)過(guò)程規(guī)則制定、場(chǎng)景設(shè)定、評(píng)價(jià)策略與分?jǐn)?shù)計(jì)算;學(xué)生通過(guò)注戶(hù)注冊(cè)和角色選擇功能模擬用戶(hù)、項(xiàng)目經(jīng)理、系統(tǒng)分析師、軟件設(shè)計(jì)師、程序員、測(cè)試員完成軟件開(kāi)發(fā)模擬過(guò)程后得到總評(píng)分?jǐn)?shù);系統(tǒng)基于時(shí)間按設(shè)定規(guī)則自動(dòng)執(zhí)行,并提示學(xué)生完成規(guī)定工作和提交產(chǎn)品;系統(tǒng)評(píng)價(jià)總分包括:過(guò)程分?jǐn)?shù)是根據(jù)學(xué)生完成工作過(guò)程是否符合規(guī)則設(shè)定得到;產(chǎn)品分?jǐn)?shù)是根據(jù)學(xué)生提交產(chǎn)品的質(zhì)量得到;系統(tǒng)支持相同項(xiàng)目在某時(shí)間點(diǎn)后不同分支執(zhí)行過(guò)程的結(jié)果圖數(shù)據(jù)對(duì)比。
系統(tǒng)采用B/S架構(gòu)風(fēng)格、事件驅(qū)動(dòng)架構(gòu)風(fēng)格和基于規(guī)則的系統(tǒng)架構(gòu)風(fēng)格。將系統(tǒng)部署在Web服務(wù)器,進(jìn)行負(fù)載均衡配置,數(shù)據(jù)庫(kù)服務(wù)器單獨(dú)設(shè)立,方便實(shí)訓(xùn)課程增加而導(dǎo)致的持久化的數(shù)據(jù)量加大,可以按需擴(kuò)展。對(duì)實(shí)訓(xùn)軟件場(chǎng)景頁(yè)面變化不大設(shè)計(jì)使用前端緩存技術(shù)和WebSocket技術(shù),提高頁(yè)面交互的實(shí)時(shí)性和訪(fǎng)問(wèn)速度。由HTML5+CSS3+JavaScripts構(gòu)建前端頁(yè)面,利用前端緩存技術(shù),瀏覽器將不經(jīng)常變的頁(yè)面內(nèi)容保存在本地,以便下次訪(fǎng)問(wèn)時(shí)直接加載。將前端緩存技術(shù)與WebSocket API 結(jié)合,使瀏覽器和服務(wù)器只一次握手就可直接快速傳送數(shù)據(jù),性能優(yōu)于AJAX輪詢(xún)機(jī)制。
模擬實(shí)訓(xùn)系統(tǒng)使用事件驅(qū)動(dòng)架構(gòu)風(fēng)格是解決在系統(tǒng)自動(dòng)執(zhí)行規(guī)則和評(píng)價(jià)過(guò)程中角色和規(guī)則的觸發(fā)關(guān)系問(wèn)題。系統(tǒng)設(shè)計(jì)是首先由教師基于軟件開(kāi)發(fā)模型對(duì)執(zhí)行規(guī)則和評(píng)價(jià)方法制定;其次是用戶(hù)在使用時(shí)先確定角色和開(kāi)發(fā)模型(即規(guī)則),再由系統(tǒng)自動(dòng)執(zhí)行規(guī)則和評(píng)價(jià),要求實(shí)訓(xùn)用戶(hù)角色和規(guī)則是解耦的。使用事件驅(qū)動(dòng)架構(gòu)風(fēng)格,即可以進(jìn)行規(guī)則的集中注冊(cè),也實(shí)現(xiàn)了用戶(hù)角色與規(guī)則的解耦;實(shí)現(xiàn)了通過(guò)角色的確定和規(guī)則的選擇在系統(tǒng)自動(dòng)執(zhí)行過(guò)程中,系統(tǒng)自動(dòng)調(diào)用觸發(fā)事件所注冊(cè)的規(guī)則,完成參與角色之間按規(guī)則交互的應(yīng)用場(chǎng)景。在采用事件驅(qū)動(dòng)架構(gòu)風(fēng)格進(jìn)行編碼時(shí),使用Spring框架,消息隊(duì)列管理完全基于配置,簡(jiǎn)化了編碼難度,結(jié)構(gòu)清晰簡(jiǎn)單,可維護(hù)性好,降低了項(xiàng)目開(kāi)發(fā)難度;在功能擴(kuò)展方面,便于修改規(guī)則和增加規(guī)則主題,以及不同規(guī)則間的組合。
模擬實(shí)訓(xùn)軟件將基于規(guī)則的系統(tǒng)架構(gòu)風(fēng)格應(yīng)用在整體三層架構(gòu)中的中間層----應(yīng)用邏輯層,解決制定規(guī)則集、規(guī)則解釋器、選擇器規(guī)則制定與解釋和系統(tǒng)自動(dòng)執(zhí)行問(wèn)題。教師通過(guò)表示層來(lái)編輯規(guī)則,應(yīng)用邏輯的實(shí)現(xiàn)代碼抽象為規(guī)則,生成規(guī)則集的執(zhí)行邏輯;學(xué)生則得到由系統(tǒng)按規(guī)則自動(dòng)執(zhí)行后的結(jié)果評(píng)價(jià)。采用基于規(guī)則的系統(tǒng)架構(gòu)風(fēng)格進(jìn)行設(shè)計(jì),首先基于軟件開(kāi)發(fā)模型特征抽象規(guī)則集;其次是從應(yīng)用程序代碼中分離執(zhí)行決策,基于Prova+Mandarax設(shè)計(jì)規(guī)則引擎則/解釋器,用于系統(tǒng)基于時(shí)鐘自動(dòng)執(zhí)行規(guī)則時(shí)監(jiān)控執(zhí)行狀態(tài),便于根據(jù)時(shí)鐘進(jìn)行狀態(tài)更新;然后是實(shí)現(xiàn)用戶(hù)接口接受數(shù)據(jù)輸入、解釋業(yè)務(wù)規(guī)則、跟蹤執(zhí)行的事件等模擬功能。其中規(guī)則集和狀態(tài)管理器為標(biāo)準(zhǔn)部件,其他為可變部件。采用基于規(guī)則的架構(gòu)風(fēng)格設(shè)計(jì)成功的將規(guī)則集、規(guī)則解釋器、選擇器、工作內(nèi)存以及解釋問(wèn)題有機(jī)的結(jié)合到一起,即便于規(guī)則的制定和解釋?zhuān)矊?shí)現(xiàn)系統(tǒng)的自動(dòng)執(zhí)行。
考慮到后期的開(kāi)發(fā)工作及相關(guān)系統(tǒng)的集成與數(shù)據(jù)共享問(wèn)題,采用SOA架構(gòu)模式+ESB總線(xiàn)封裝集成實(shí)訓(xùn)相關(guān)業(yè)務(wù),實(shí)現(xiàn)應(yīng)用集成;為了解決各系統(tǒng)間數(shù)據(jù)共享問(wèn)題,采用數(shù)據(jù)倉(cāng)庫(kù)技術(shù)對(duì)實(shí)訓(xùn)數(shù)據(jù)進(jìn)行定義、清洗、分發(fā)和傳送,實(shí)現(xiàn)數(shù)據(jù)集成?;谲浖こ踢^(guò)程的模擬實(shí)訓(xùn)軟件架構(gòu)設(shè)計(jì)如圖1所示,下層為上層提供服務(wù)。
在軟件工程實(shí)訓(xùn)模擬軟件系統(tǒng)中,數(shù)據(jù)存儲(chǔ)的關(guān)系模型主要部分如下:
學(xué)生(學(xué)號(hào),姓名,性別,地址,電話(huà),用戶(hù)類(lèi)型,密碼,登錄名,文件,班級(jí)ID,用戶(hù)ID);
班級(jí)(班級(jí)ID,名稱(chēng),類(lèi)型,狀態(tài));
教師(教師ID,姓名,授課時(shí)間,用戶(hù)類(lèi)型,登錄名,密碼,工號(hào),班級(jí)ID,用戶(hù)ID,課程ID);
課程(課程ID,課程名稱(chēng));
課程成績(jī)(學(xué)號(hào),課程ID,課程成績(jī),評(píng)價(jià));
用戶(hù)(用戶(hù)ID,登錄名,密碼);
用戶(hù)選擇角色(用戶(hù)ID,角色I(xiàn)D,用戶(hù)角色,選擇角色時(shí)間);
角色(角色I(xiàn)D,名稱(chēng));
角色提交文檔(角色I(xiàn)D,文檔ID,提交時(shí)間,保存地址);
文檔(文檔ID,文檔名稱(chēng),文檔類(lèi)型,文檔類(lèi)型ID);
文檔類(lèi)型(文檔類(lèi)型ID,類(lèi)型名稱(chēng))。
三、結(jié)束語(yǔ)
本文研究實(shí)踐證明,軟件工程課程教學(xué)過(guò)程采用游戲的形式,將學(xué)習(xí)與娛樂(lè)有機(jī)的整合到一起,是可以有效的提高學(xué)生學(xué)習(xí)積極性和學(xué)習(xí)效果。使影響軟件開(kāi)發(fā)項(xiàng)目是否成功的各類(lèi)因素及其組合通過(guò)游戲形式對(duì)學(xué)生和教師產(chǎn)生深遠(yuǎn)的影響,通過(guò)不斷調(diào)整實(shí)施策略來(lái)保證軟件開(kāi)發(fā)項(xiàng)目成功的高比率。
參? 考? 文? 獻(xiàn)
[1] James S.Collofello. University/Industry Collaboration in Developing A Simulation Based Software Project Management Training Course[C]//Thirteenth Conference on Software Engineering Education and Training, March, 2000, Austin, Texas, USA:161-168.
[2] 李廣原,胡秦斌. 軟件工程課程模擬教學(xué)法初探. 計(jì)算機(jī)教育. 2011年第13期. 92-95
[3] 韋宇煒,聶篤憲. 軟件工程課程設(shè)計(jì)教學(xué)模式探討[J]. 考試周刊,2010(11):159-160
[4]? SimSE OnLine.
[5] 李廣原,馬楠. 國(guó)外軟件工程教學(xué)法初探. 計(jì)算機(jī)教育. 2011年第1期. 92-95
[6] Jazayeri M. The Education of a Software Engineer[C]//Proceedings of the 19th International Conference on Automated Software Engineering. Linz,Austria:IEEE,2004.
[7] 張海藩,牟永敏. 軟件工程導(dǎo)論. 清華大學(xué)出版社. 2013年8月第6版. 5-15