李亦飛,王文琴
(常州工學(xué)院計算機信息工程學(xué)院,江蘇 常州 213002)
“項目開發(fā)實訓(xùn)”教學(xué)的探索
李亦飛,王文琴
(常州工學(xué)院計算機信息工程學(xué)院,江蘇 常州 213002)
“項目開發(fā)實訓(xùn)”課程為軟件工程專業(yè)的學(xué)生提供一個軟件項目開發(fā)的實訓(xùn)平臺,旨在提高軟件工程專業(yè)學(xué)生的就業(yè)競爭力和解決實際問題的能力,提高團隊合作精神和溝通能力。通過實訓(xùn),學(xué)生的各項能力得到了鍛煉和提高,并取得了顯著的效果。
項目開發(fā)實訓(xùn);軟件工程;教學(xué)模式
G642
B
近年來,軟件工程專業(yè)畢業(yè)生在就業(yè)過程中經(jīng)常面臨自身能力無法滿足企業(yè)對軟件人才技能要求的問題。由于學(xué)校和企業(yè)目標(biāo)、職責(zé)不同,難以建立相互信任、互利共享的長久機制。企業(yè)缺乏合作的內(nèi)在動力,學(xué)校也難以對企業(yè)參與人才培養(yǎng)的過程和行為進行規(guī)范和考核,合作關(guān)系不穩(wěn)定、不深入、不牢固、不持久。[1]如何幫助畢業(yè)生提高自身能力和就業(yè)競爭力,成為高校人才培養(yǎng)的新課題?!绊椖块_發(fā)實訓(xùn)”課程針對軟件工程專業(yè)學(xué)生,通過軟件工程項目實訓(xùn),掌握最新的開發(fā)工具及技術(shù),提高學(xué)生解決實際問題的能力。
“項目開發(fā)實訓(xùn)”課程是學(xué)生在本科最后學(xué)習(xí)階段的一次綜合實訓(xùn),它將已經(jīng)學(xué)習(xí)的軟件設(shè)計、開發(fā)相關(guān)課程,如“面向?qū)ο蟪绦蛟O(shè)計”“數(shù)據(jù)庫系統(tǒng)概論”“系統(tǒng)分析與建?!薄败浖こ獭钡仍陧椖恐羞M行整合,使學(xué)生體會到每門課程在軟件工程中的作用和地位,且可將所學(xué)的知識應(yīng)用到項目開發(fā)中。課程引入企業(yè)實際項目或?qū)嶋H項目的子模塊,以項目驅(qū)動教學(xué),學(xué)生是項目的參與者,教師是項目的質(zhì)量管理者。[2]學(xué)生通過親自參與項目,承擔(dān)不同的角色,完成相應(yīng)的任務(wù),切身體會軟件工程開發(fā)流程,提高對軟件規(guī)范性的認識,師生之間是一種平等、合作、協(xié)商的教學(xué)關(guān)系。教學(xué)中,以項目為課程的主導(dǎo),教師成為學(xué)生的指導(dǎo)者和引路人,學(xué)生成為學(xué)習(xí)的主體,積極主動地參與項目管理活動,師生之間形成良好互動的教學(xué)氛圍。[3]
1.1項目選擇
在“項目開發(fā)實訓(xùn)”課程中,項目選擇面臨兩個問題。一是自擬項目多為一些在教材中或者網(wǎng)絡(luò)上能輕易找到的課題,如圖書館管理系統(tǒng)、學(xué)生成績管理系統(tǒng)等,學(xué)生很容易通過網(wǎng)絡(luò)下載相關(guān)資料來完成任務(wù);或者因為項目都為教師在課堂中講授的例子,學(xué)生在實訓(xùn)過程中原樣照搬,不能靈活運用。二是企業(yè)項目由于來自實際應(yīng)用,項目背景復(fù)雜,系統(tǒng)龐大,學(xué)生掌握有一定的難度,導(dǎo)入比較困難。
針對以上問題,本課程在選擇項目時強調(diào)既要保持項目的真實性,又要具備實訓(xùn)課程的可操作性。在任務(wù)選擇時并不要求學(xué)生完成一個獨立的項目,而是讓其完成項目中的某個功能模塊。學(xué)生為了完成此功能模塊,需要理解自己承擔(dān)的模塊在該系統(tǒng)中的地位和作用,了解需要使用其他哪些模塊的服務(wù),以及需要為哪些模塊提供服務(wù)。由于課程選擇的項目為軟件企業(yè)或者科研單位的實際課題,具有較強的實用性,同時根據(jù)課程進行裁剪,使學(xué)生在真實感受實際開發(fā)氛圍的同時,也能體會到完成任務(wù)后的喜悅。[4]
1.2文檔管理和進度控制
在軟件企業(yè)中,由于項目管理的需要,項目開發(fā)除了完成編碼,還需要完成各種文檔和表格的編寫和填報,如需求分析報告、軟件設(shè)計說明書、項目進度管理表格、軟件測試報告、軟件使用說明書等。規(guī)范齊全的文檔便于項目管理者了解項目的開發(fā)進度、開發(fā)質(zhì)量、資源分配,便于開發(fā)人員在編碼時正確地了解需求,規(guī)范地完成編碼。在項目開發(fā)中,能及時規(guī)避風(fēng)險,及時糾正問題,避免重大錯誤的發(fā)生。
里程碑是完成階段性工作的標(biāo)志,是項目中的重大事件。在實訓(xùn)期間,為了控制項目進展,設(shè)置了需求設(shè)計、功能設(shè)計、功能預(yù)演、測試和交付五個里程碑。學(xué)生必須在每個里程碑的時間點,提交相關(guān)成果。①需求設(shè)計階段提交需求設(shè)計說明書;②功能設(shè)計階段提供畫面設(shè)計、數(shù)據(jù)庫設(shè)計文檔;③功能預(yù)演階段提供可演示代碼;④測試階段提供測試文檔和測試總結(jié)報告;⑤交付階段提供以上所有代碼和文檔以及產(chǎn)品使用說明書。
由于學(xué)生在平時的學(xué)習(xí)過程中,沒有系統(tǒng)地完成過文檔,對文檔的格式要求也不是很明確,因此文檔編寫的規(guī)范性尤為重要。本課程中,教師向?qū)W生介紹各種文檔的作用、填寫規(guī)范,并提供可參考的樣本,而不要求學(xué)生從零開始完成文檔。學(xué)生參考教師提供的樣本,填寫模板,最后達到規(guī)范化要求。
1.3項目管理
項目管理軟件在軟件開發(fā)、團隊管理中是必不可少的工具。在課程中搭建了以下平臺,為學(xué)生提供了更真實的模擬開發(fā)環(huán)境。
1)SVN集中式代碼管理服務(wù)器,進行代碼版本管理。學(xué)生使用SVN客戶端進行文檔代碼的更新和同步,服務(wù)器端保存文件創(chuàng)建修改的歷史記錄,教師可以通過服務(wù)器看到學(xué)生完成的代碼和文檔的進度,督促學(xué)生獨立完成各自的任務(wù)。
2)Collabtive 項目管理系統(tǒng),進行里程碑、任務(wù)、文件、時間追蹤管理,實時掌握項目進展動態(tài)。學(xué)生在項目初期指定任務(wù)計劃,日常填報任務(wù)進度、上傳文件,實時掌握項目進度。項目組借助管理軟件能方便、有效地完成日常項目管理工作。
3)配置測試和運行服務(wù)器。學(xué)生在本地調(diào)試系統(tǒng)成功后,將系統(tǒng)發(fā)布到服務(wù)器,進行系統(tǒng)測試和運行。課程中為每個項目組設(shè)置了不同的數(shù)據(jù)庫、應(yīng)用程序服務(wù)權(quán)限,項目組定期將數(shù)據(jù)庫和運行版系統(tǒng)發(fā)布到服務(wù)器上,教師可以實時查看和運行不同項目組的系統(tǒng)。
在“項目開發(fā)實訓(xùn)”課程中,學(xué)生以4~6人為一組,設(shè)立項目經(jīng)理、分析設(shè)計、編碼和測試等角色,學(xué)生在分組中承擔(dān)相應(yīng)角色,并可以同時參與多個角色,完成軟件開發(fā)生命周期中各個階段的產(chǎn)出物。項目開發(fā)實訓(xùn)環(huán)節(jié)分為以下階段[5]:
2.1課題準(zhǔn)備階段
“項目開發(fā)實訓(xùn)”課題由教師事先準(zhǔn)備,主要來源于軟件企業(yè)和科研項目,課程初期教師向?qū)W生介紹項目的背景、完成內(nèi)容、項目管理工具的使用,同時介紹軟件項目的相關(guān)知識以及業(yè)內(nèi)規(guī)范。
2.2案例講授階段
萬事開頭難,學(xué)生在初期并不能立即適應(yīng)規(guī)范的軟件開發(fā),教學(xué)中通過案例介紹,讓學(xué)生從模仿開始,進入項目開發(fā)的角色。案例講授側(cè)重以下內(nèi)容:①開發(fā)各個階段需要完成的文檔,并提供文檔的模板,這些文檔很多是設(shè)計文檔,是后續(xù)開發(fā)的藍本,通過講授使學(xué)生了解文檔的重要性,以及文檔之間的關(guān)聯(lián)性;②開發(fā)環(huán)境搭建,完成本地調(diào)試環(huán)境和遠程測試運行環(huán)境,并讓學(xué)生完成項目開發(fā)、發(fā)布的過程;③案例代碼的編寫和調(diào)試,側(cè)重編碼的規(guī)范性和常用調(diào)試方法教學(xué)。
2.3開發(fā)實訓(xùn)階段
項目組根據(jù)各自課題完成相關(guān)工作。項目組成員各盡其責(zé),完成需求分析、功能設(shè)計、數(shù)據(jù)庫設(shè)計、UI設(shè)計、編碼、測試和發(fā)布過程,并且每天進行工作小結(jié),填寫進度。教師對各項目組進行總體監(jiān)督,實時掌握各組項目開發(fā)進展情況。
2.4評審階段
評審階段安排在項目開發(fā)實訓(xùn)中期,主要進行文檔評審和代碼評審,檢查文檔和代碼的書寫是否規(guī)范和正確,及時糾正在開發(fā)階段存在的問題,全面掌控項目開發(fā)進度。
2.5驗收答辯階段
項目結(jié)束時,各項目組對項目進行匯報演示,演示過程中教師提出問題或意見,針對學(xué)生的答辯情況和項目完成情況做出評價,并提出意見和建議。
3.1規(guī)范性認識
所謂規(guī)范是指在項目中對涉及的文檔、代碼和流程制訂規(guī)則,并且所有成員必須遵守這些規(guī)則。學(xué)生通過課程學(xué)習(xí),認識到在軟件開發(fā)過程中需要遵循各項規(guī)范。
1)文檔規(guī)范。書寫的文檔要有規(guī)范的格式和形式,同一個項目的文檔要有統(tǒng)一性,每份文檔有完整的信息,包括文檔編碼、文檔標(biāo)題、所屬項目、所屬部門、編制人、編制時間、版本等信息,格式有封面、目錄、頁眉、頁腳。
2)代碼規(guī)范。代碼文件結(jié)構(gòu)整齊清晰、文件命名及變量命名規(guī)范,編碼中避免已知的一些陋習(xí)。
3)流程規(guī)范。每天工作有計劃,工作結(jié)束后善于總結(jié)經(jīng)驗,發(fā)現(xiàn)不足。
3.2學(xué)習(xí)能力提高
IT行業(yè)技術(shù)更新快,開發(fā)工具更換頻繁。項目開發(fā)過程中經(jīng)常會接觸到新技術(shù)、新工具,作為軟件相關(guān)專業(yè)的學(xué)生,必須具備較強的學(xué)習(xí)能力,才能夠快速學(xué)習(xí)和掌握這些技術(shù)和工具。
在項目開發(fā)實訓(xùn)課程中,要求項目組根據(jù)自身課題特點,調(diào)查相關(guān)新技術(shù)、新工具,并在項目中使用新技術(shù)、新工具。學(xué)生在大學(xué)學(xué)習(xí)過程中,缺少鉆研精神,往往只是為考試而學(xué)習(xí)。而在實際開發(fā)現(xiàn)場,一般無教師輔導(dǎo),需要有較強的學(xué)習(xí)能力和自主學(xué)習(xí)能力。教師在課程中積極引導(dǎo),讓學(xué)生學(xué)會通過這些技術(shù)和工具提供的幫助文檔和示例,掌握這些技術(shù)和工具。
3.3加強團隊合作意識
平時的學(xué)習(xí)通常是一個人的個體行為,但是軟件工程是一個龐大的工程,需要團隊合作完成。每個成員在團隊中擔(dān)當(dāng)著不同的角色,每個成員在完成自己工作的同時也在使用著他人的工作成果和為他人提供服務(wù)。在團隊合作中成員之間相互溝通,協(xié)助完成任務(wù)。
學(xué)生在項目開發(fā)實訓(xùn)中,通過文檔進行項目設(shè)計和開發(fā),在同一個工程進行代碼編寫和程序調(diào)試,遇到問題通過郵件溝通。通過實訓(xùn),學(xué)生學(xué)習(xí)了如何團隊開發(fā)項目,深刻認識到團隊合作必須相互配合,聽取建議,及時調(diào)整,才能使項目開發(fā)工作順利進行。
“項目開發(fā)實訓(xùn)”是一門理論和實踐緊密集合的課程,學(xué)生參與軟件項目開發(fā),熟悉規(guī)范化開發(fā)流程,團隊合作完成項目開發(fā)。通過課程學(xué)習(xí),學(xué)生提高了自身的學(xué)習(xí)能力、團隊協(xié)作能力,提升了就業(yè)的自信心,體會到項目開發(fā)不是一個單兵作戰(zhàn)的過程,而是一個團隊相互溝通、相互合作的過程,并且這一過程是一個規(guī)范化過程,需要完成各種規(guī)范化的文檔、編寫規(guī)范化的代碼。同時借助于一些工具軟件,提高了整個過程的效率。
[1]胡智喜,莊燕濱.“校企一體化”軟件工程卓越人才培養(yǎng)模式的研究與實踐[J].常州工學(xué)院學(xué)報,2013(2):77-80.
[2]肖蕾,鐘瑛.軟件開發(fā)綜合實訓(xùn)課程的教學(xué)改革與實踐[J].計算機教育,2012(10):104-106.
[3]康雁,李彤.基于SE-CDIO 培養(yǎng)學(xué)生項目管理能力的新途徑[J].計算機教育,2013(13):65-68.
[4]張志佳,張雪.基于項目驅(qū)動的計算機專業(yè)校內(nèi)實訓(xùn)模式的研究與實踐[J].中國輕工教育,2012(2):53-55.
[5]朱克敵.項目開發(fā)管理課程設(shè)計教學(xué)方法研究與實踐[J].計算機教育,2010(16):87-88.
責(zé)任編輯:唐海燕
ResearchandApplicationofProjectDevelopmentTrainingCourse
LIYifei,WANGWenqin
(School of Computer Information Engineering,Changzhou Institute of Technology,Changzhou 213002)
ProjectDevelopmentTrainingcourse provides a software project development training platform for students who major in software development.It can improve the students′ employment potential and ability to solve problems and skills of teamwork and communication.By the training,students have their abilities fully exercised and improved,and achieved remarkable results.
ProjectDevelopmentTraining;software engineering;teaching modes
2014- 01- 07
常州工學(xué)院2013年度教學(xué)改革研究課題(J120303)
李亦飛(1978— ),男,講師。
1671- 0436(2014)03- 0074- 04