?
基于敏捷開發(fā)的數(shù)據(jù)庫系統(tǒng)課程設(shè)計教學研究與實踐
肖小聰,曹步清,龔波
(湖南科技大學 計算機科學與工程學院,湖南 湘潭 411201)
摘要:針對計算機專業(yè)數(shù)據(jù)庫系統(tǒng)課程設(shè)計中學生缺乏主動性、學習積極性和創(chuàng)造能力不高、授課方式單一等問題,將敏捷開發(fā)思想融入到數(shù)據(jù)庫課程設(shè)計中,提出了基于敏捷開發(fā)的數(shù)據(jù)庫課程設(shè)計的總體思路、實驗框架及其具體實施策略和方法。實驗實施結(jié)果表明:該教學模式能將數(shù)據(jù)庫理論知識和實踐有效地結(jié)合起來,增強了學生的自主能動性和積極性,明顯提高了學生的動手能力、創(chuàng)造力和創(chuàng)新能力。
關(guān)鍵詞:計算機專業(yè);實踐教學;敏捷開發(fā);數(shù)據(jù)庫;教學改革
1問題的提出
湖南科技大學合并成立以來,計算機學院加強了對專業(yè)理論課和實踐課的教學研究和管理工作,取得了可喜的教學成果,已經(jīng)成功申報了省級實踐教學示范中心、省級重點實驗室和省級、校級特色專業(yè)等,學院教學資源、學習環(huán)境、軟件和硬件資源得到了極大的豐富。專業(yè)課課程設(shè)計實踐教學是計算機本科專業(yè)實踐教學計劃中的重要環(huán)節(jié),數(shù)據(jù)庫系統(tǒng)課程設(shè)計是其中的核心課程之一,該課程主要是加深和鞏固學生對關(guān)系數(shù)據(jù)庫基本理論知識的理解與應(yīng)用,要求學生至少掌握或精通一種數(shù)據(jù)庫管理系統(tǒng)軟件并掌握其操作技術(shù),并能熟練應(yīng)用數(shù)據(jù)庫前端開發(fā)工具(如Java、VB、C++、Delphi、PowerBuilder等)根據(jù)實際應(yīng)用需求進行數(shù)據(jù)信息管理軟件的開發(fā)。該課程設(shè)計實踐教學安排在數(shù)據(jù)庫系統(tǒng)理論教學完成后的兩周內(nèi)進行,課程設(shè)計要求每個指導(dǎo)老師全程輔導(dǎo)一個班級的學生(30人左右),從課程設(shè)計安排、任務(wù)講解、輔導(dǎo)、管理、測試、成績評定已有一套完整的模式。然而,從筆者近幾年來從事數(shù)據(jù)庫系統(tǒng)課程設(shè)計教學的實際情況來看,還存在著一些問題:(1)學生的積極性、主動性和創(chuàng)新能力不高,代碼和報告存在抄襲現(xiàn)象;(2)實踐教學內(nèi)容組織形式單一,缺乏靈活性。有些內(nèi)容陳舊,實驗平臺或開發(fā)工具沒有落后或更新;(3)實踐教學授課方式固定和單一,致使學生學習積極性不高;(4)在創(chuàng)造性思維和能力的培養(yǎng)方面,缺乏個性化的實踐教學方式;(5)在實踐技能考核上形式單一,實踐技能的培養(yǎng)有待進一步提高。
目前,IT軟件界正流行一種新的軟件開發(fā)模式-敏捷開發(fā)(Agile Development)。敏捷開發(fā)的典型實現(xiàn)-極限編程(eXtreme Programming,簡稱XP)正在被許多大公司和企業(yè)采用,也得到了很多高校教育研究者的認同。敏捷開發(fā)是一種高度迭代、且高效實用的輕量級軟件構(gòu)建方法,它來源于實踐,能迅速適應(yīng)快速改變的軟件需求,它強調(diào)以人為核心、迭代、循序漸進的進行軟件開發(fā)[1]。它突出軟件開發(fā)團隊的合作精神,體現(xiàn)敏捷理念中的五個核心價值觀:溝通、簡單、反饋、勇氣和謙遜。在敏捷開發(fā)中,軟件項目常常被切分成多個子項目,由項目經(jīng)理負責,各個子項目由結(jié)對編程的小組來完成,它類似于現(xiàn)實生活中的“師徒”制,但它有一套完整而科學的核心價值、組隊原則、評價體系、日常管理規(guī)范和考核標準,具有很強的實用性,它能極大的提高團隊成員的積極性,能大大的提高人的潛能和創(chuàng)新能力[2]。因此,筆者嘗試將敏捷開發(fā)理念融入到數(shù)據(jù)庫系統(tǒng)課程設(shè)計實踐中,設(shè)計了該課程設(shè)計的實驗內(nèi)容框架,實驗步驟和注意事項,期待進一步改進數(shù)據(jù)庫課程設(shè)計的教學現(xiàn)狀,同時對計算機專業(yè)其它課程設(shè)計實踐教學起到拋磚引玉之作用。
2基于敏捷開發(fā)的數(shù)據(jù)庫課程設(shè)計實踐教學改革模式的設(shè)計
基于敏捷的數(shù)據(jù)庫課程設(shè)計遵循敏捷開發(fā)理念的演進式設(shè)計模式,項目經(jīng)理將數(shù)據(jù)庫課程設(shè)計中已分配的項目分成多個迭代周期開發(fā),每個周期實現(xiàn)系統(tǒng)一部分功能,一個迭代周期也稱為一個沖刺,在每個迭代周期中都需要進行計劃,需求分析,設(shè)計,編碼和測試等環(huán)節(jié)。每次迭代會根據(jù)前一次的反饋和本次的需求變化做出計劃和調(diào)整,系統(tǒng)強調(diào)以提交小版本可運行軟件的方式來開發(fā)系統(tǒng)。
計算機學院數(shù)據(jù)庫課程設(shè)計開發(fā)時間為兩周,安排在該課程理論授課結(jié)束后進行,每個教學班安排一位指導(dǎo)老師,班級人數(shù)約30人左右。首先,教師根據(jù)敏捷開發(fā)理念建立敏捷開發(fā)小團隊,即將班級人數(shù)分成5~6個小組,每組5~6人;然后,教師根據(jù)課程設(shè)計指導(dǎo)書上的項目數(shù)(通常是10個左右)合理地將任務(wù)分配給班上的各個團隊小組,團隊小組將本組內(nèi)成員按敏捷開發(fā)分成不同的角色,每個人在軟件開發(fā)不同時期擔任不同的角色,且每個角色負責不同的功能模塊和編程開發(fā)任務(wù)。最后,教師將各個小組項目的開發(fā)周期分為四個沖刺階段:準備階段Sprint0、迭代產(chǎn)品1-3三個階段。其中,準備階段的主要工作:建立敏捷開發(fā)小團隊,用戶角色分配,編寫用戶故事,設(shè)計系統(tǒng)架構(gòu)和產(chǎn)品愿景等,該階段需要的時間不多,故安排在一天內(nèi)(8小時)完成即可。其它三個階段安排在剩余的9天時間里面,以3天為一個周期或一個沖刺,沖刺結(jié)束后各項目敏捷小組提交可運行的軟件產(chǎn)品給指導(dǎo)老師,指導(dǎo)老師評閱后,召開小組會議,反饋意見給小組,如此反復(fù)進行三次迭代即完成該課程設(shè)計任務(wù)[3]。數(shù)據(jù)庫開發(fā)過程中的需求分析、概念設(shè)計、邏輯設(shè)計、物理設(shè)計、編程實現(xiàn)、系統(tǒng)集成、驅(qū)動測試和集成測試、結(jié)隊編程、站立式會議等基本方法始終融入在三個沖刺階段中,系統(tǒng)的主要功能(用戶故事)和編程工作建議平均分配在三個迭代周期中,用戶故事的編寫由易到難,區(qū)分不同的優(yōu)先級,在每次迭代中逐步增加內(nèi)容和難度,時間、任務(wù)、提交內(nèi)容和理論知識的具體安排詳見表1。
表1 基于敏捷開發(fā)的數(shù)據(jù)庫課程設(shè)計實驗內(nèi)容框架表
3基于敏捷開發(fā)的數(shù)據(jù)庫課程設(shè)計實踐教學改革嘗試和體會
筆者將上述實踐教學改革方法在我校計算機專業(yè)做了幾次小規(guī)模實驗,從同學們提交的作品和反應(yīng)的情況來看,實驗改革取得了相當不錯的成績。班級學風得到了很大的改善,缺課、打瞌睡、玩游戲現(xiàn)象幾乎沒有了,代碼和報告抄襲現(xiàn)象明顯降低,學生的積極性和主動性得到了極大的提高,小組經(jīng)常討論問題,“傳幫帶”的理念得到了很好的實施,學生的動手實踐能力,查找資料能力和解決問題能力大大增強。
下面筆者針對該門課程的實踐教學談幾點體會與建議。
俗話說“知之者不如好之者,好之者不如樂之者?!迸d趣是最好的老師,是培養(yǎng)學生自主能動性和創(chuàng)新能力的動力[4]。筆者嘗試了三種激勵方式,第一:鼓勵學生平時(特別是授課前)進老師實驗室,觀摩老師開發(fā)的軟件作品,教師應(yīng)該有針對性的演示其數(shù)據(jù)庫應(yīng)用開發(fā)軟件作品,以此來激發(fā)學生的學習興趣。第二:可以在理論授課的同時,將知識點講解融入到軟件開發(fā)產(chǎn)品中,理論結(jié)合實踐,即時編程展現(xiàn)或代碼解析,讓理論看得見,特別是對那些枯燥乏味的知識,能極大的提高學生的積極性。第三:設(shè)計與現(xiàn)實生活息息相關(guān)的案例,內(nèi)容與現(xiàn)實應(yīng)用緊密結(jié)合,盡量不脫節(jié),移動App應(yīng)用,B/S模式應(yīng)用系統(tǒng)或在上個年級的遺留系統(tǒng)上進行二次開發(fā),也可以鼓勵學生自主命題。
敏捷開發(fā)強調(diào)小組成員以人為中心,突出自我管理能力,培養(yǎng)學生團隊榮譽感和責任感,隨意的自愿和自由組隊兩種方式均不可取。憑筆者前幾次的實踐經(jīng)驗,自愿組隊往往會導(dǎo)致學習成績好、動手能力強的同學組隊到一起,結(jié)果導(dǎo)致了成績差,動手能力差的同學也到一起,造成兩級分化現(xiàn)象,有些組能夠很快完成,而有些組根本無法完成,只能抄襲。而隨機組隊也不行,會因?qū)W生個體的動手能力、學習能力、成績差異、性格等因素破壞學生的積極性和主動性。有意義的做法是教師介入的“自愿組隊”,教師在盡量保證同學自愿的基礎(chǔ)上,參考同學們學習成績和動手能力的差異,搭配組隊。自愿不等于隨意,好生需要帶動差生,要突出“傳幫帶”的理念,鼓勵學生幫組他人,虛心向同學學習,擔任項目開發(fā)周期中的不同角色,培養(yǎng)團隊意識,提高溝通能力,促進個人技能全面發(fā)展。
數(shù)據(jù)庫案例的選擇應(yīng)貼近生活和應(yīng)用,如基于JAVA、JSP、MVC和Android等軟件開發(fā)。整個教學過程始終圍繞選定的案例,堅持每日站立式會議,注意啟發(fā)式教學,同時,也要注意學生群體個體性差異,突出個性化發(fā)展。鼓勵學生進行角色互換,情境模擬,讓學生主動思考,掌握敏捷技能知識,培養(yǎng)解決實際問題的能力。
案例教學的培養(yǎng)目標不能太寬,切記將后續(xù)課程軟件工程和過多的敏捷開發(fā)的知識融入進來,應(yīng)該以數(shù)據(jù)庫開發(fā)七個階段為主線,突出數(shù)據(jù)庫原理知識的應(yīng)用和數(shù)據(jù)庫應(yīng)用開發(fā)技術(shù)的掌握。
為了保證有效的實驗教學效果,在保證學時的基礎(chǔ)上,應(yīng)堅持小班上課。利用我院和企業(yè)已有的合作平臺和經(jīng)驗,進一步加大校企合作,積極聘請有經(jīng)驗的企業(yè)工程師,培訓(xùn)師來校做專題講座或授課。同時,鼓勵和幫助教師提高自身的業(yè)務(wù)水平和專業(yè)素養(yǎng),特別是實踐動手教學能力的培養(yǎng),定期安排教師短期進修或參加專業(yè)技能培訓(xùn)等。
參考文獻:
[1] Robert C Martin. Agile software development-Principles, patterns, and practices[M]. 鄧輝,譯.北京:清華大學出版社,2003.
[2] Kent Beck,Cynthia Andres.解析極限編程:擁抱變化[M]. 雷劍文,李應(yīng)樵,陳振沖,譯.北京:機械工業(yè)出版社,2011.
[3] 朱少民. 軟件工程敏捷方法的實驗框架及實施[J].計算機教育,2014(7):54-57.
[4] 楊天怡,胡新平,嚴薇,等. 創(chuàng)新教育與實踐教學創(chuàng)新[J].中國高等教育,2005(23):28-29.
(責任校對游星雅)
中圖分類號:G64
文獻標志碼:A
文章編號:1674-5884(2016)01-0037-03
作者簡介:肖小聰(1974-),男,湖南雙峰人,講師,博士研究生,主要從事數(shù)據(jù)庫開發(fā)、web服務(wù)和數(shù)據(jù)挖掘等教學與研究。
基金項目:湖南科技大學教學研究與改革項目(G31210,G31390)
收稿日期:20150924
doi:10.13582/j.cnki.1674-5884.2016.01.012