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