?
基于敏捷開發的數據庫系統課程設計教學研究與實踐
肖小聰,曹步清,龔波
(湖南科技大學 計算機科學與工程學院,湖南 湘潭 411201)

摘要:針對計算機專業數據庫系統課程設計中學生缺乏主動性、學習積極性和創造能力不高、授課方式單一等問題,將敏捷開發思想融入到數據庫課程設計中,提出了基于敏捷開發的數據庫課程設計的總體思路、實驗框架及其具體實施策略和方法。實驗實施結果表明:該教學模式能將數據庫理論知識和實踐有效地結合起來,增強了學生的自主能動性和積極性,明顯提高了學生的動手能力、創造力和創新能力。
關鍵詞:計算機專業;實踐教學;敏捷開發;數據庫;教學改革

1問題的提出
湖南科技大學合并成立以來,計算機學院加強了對專業理論課和實踐課的教學研究和管理工作,取得了可喜的教學成果,已經成功申報了省級實踐教學示范中心、省級重點實驗室和省級、校級特色專業等,學院教學資源、學習環境、軟件和硬件資源得到了極大的豐富。專業課課程設計實踐教學是計算機本科專業實踐教學計劃中的重要環節,數據庫系統課程設計是其中的核心課程之一,該課程主要是加深和鞏固學生對關系數據庫基本理論知識的理解與應用,要求學生至少掌握或精通一種數據庫管理系統軟件并掌握其操作技術,并能熟練應用數據庫前端開發工具(如Java、VB、C++、Delphi、PowerBuilder等)根據實際應用需求進行數據信息管理軟件的開發。該課程設計實踐教學安排在數據庫系統理論教學完成后的兩周內進行,課程設計要求每個指導老師全程輔導一個班級的學生(30人左右),從課程設計安排、任務講解、輔導、管理、測試、成績評定已有一套完整的模式。然而,從筆者近幾年來從事數據庫系統課程設計教學的實際情況來看,還存在著一些問題:(1)學生的積極性、主動性和創新能力不高,代碼和報告存在抄襲現象;(2)實踐教學內容組織形式單一,缺乏靈活性。有些內容陳舊,實驗平臺或開發工具沒有落后或更新;(3)實踐教學授課方式固定和單一,致使學生學習積極性不高;(4)在創造性思維和能力的培養方面,缺乏個性化的實踐教學方式;(5)在實踐技能考核上形式單一,實踐技能的培養有待進一步提高。
目前,IT軟件界正流行一種新的軟件開發模式-敏捷開發(Agile Development)。敏捷開發的典型實現-極限編程(eXtreme Programming,簡稱XP)正在被許多大公司和企業采用,也得到了很多高校教育研究者的認同。敏捷開發是一種高度迭代、且高效實用的輕量級軟件構建方法,它來源于實踐,能迅速適應快速改變的軟件需求,它強調以人為核心、迭代、循序漸進的進行軟件開發[1]。它突出軟件開發團隊的合作精神,體現敏捷理念中的五個核心價值觀:溝通、簡單、反饋、勇氣和謙遜。在敏捷開發中,軟件項目常常被切分成多個子項目,由項目經理負責,各個子項目由結對編程的小組來完成,它類似于現實生活中的“師徒”制,但它有一套完整而科學的核心價值、組隊原則、評價體系、日常管理規范和考核標準,具有很強的實用性,它能極大的提高團隊成員的積極性,能大大的提高人的潛能和創新能力[2]。因此,筆者嘗試將敏捷開發理念融入到數據庫系統課程設計實踐中,設計了該課程設計的實驗內容框架,實驗步驟和注意事項,期待進一步改進數據庫課程設計的教學現狀,同時對計算機專業其它課程設計實踐教學起到拋磚引玉之作用。
2基于敏捷開發的數據庫課程設計實踐教學改革模式的設計
基于敏捷的數據庫課程設計遵循敏捷開發理念的演進式設計模式,項目經理將數據庫課程設計中已分配的項目分成多個迭代周期開發,每個周期實現系統一部分功能,一個迭代周期也稱為一個沖刺,在每個迭代周期中都需要進行計劃,需求分析,設計,編碼和測試等環節。每次迭代會根據前一次的反饋和本次的需求變化做出計劃和調整,系統強調以提交小版本可運行軟件的方式來開發系統。

計算機學院數據庫課程設計開發時間為兩周,安排在該課程理論授課結束后進行,每個教學班安排一位指導老師,班級人數約30人左右。首先,教師根據敏捷開發理念建立敏捷開發小團隊,即將班級人數分成5~6個小組,每組5~6人;然后,教師根據課程設計指導書上的項目數(通常是10個左右)合理地將任務分配給班上的各個團隊小組,團隊小組將本組內成員按敏捷開發分成不同的角色,每個人在軟件開發不同時期擔任不同的角色,且每個角色負責不同的功能模塊和編程開發任務。最后,教師將各個小組項目的開發周期分為四個沖刺階段:準備階段Sprint0、迭代產品1-3三個階段。其中,準備階段的主要工作:建立敏捷開發小團隊,用戶角色分配,編寫用戶故事,設計系統架構和產品愿景等,該階段需要的時間不多,故安排在一天內(8小時)完成即可。其它三個階段安排在剩余的9天時間里面,以3天為一個周期或一個沖刺,沖刺結束后各項目敏捷小組提交可運行的軟件產品給指導老師,指導老師評閱后,召開小組會議,反饋意見給小組,如此反復進行三次迭代即完成該課程設計任務[3]。數據庫開發過程中的需求分析、概念設計、邏輯設計、物理設計、編程實現、系統集成、驅動測試和集成測試、結隊編程、站立式會議等基本方法始終融入在三個沖刺階段中,系統的主要功能(用戶故事)和編程工作建議平均分配在三個迭代周期中,用戶故事的編寫由易到難,區分不同的優先級,在每次迭代中逐步增加內容和難度,時間、任務、提交內容和理論知識的具體安排詳見表1。

表1 基于敏捷開發的數據庫課程設計實驗內容框架表
3基于敏捷開發的數據庫課程設計實踐教學改革嘗試和體會
筆者將上述實踐教學改革方法在我校計算機專業做了幾次小規模實驗,從同學們提交的作品和反應的情況來看,實驗改革取得了相當不錯的成績。班級學風得到了很大的改善,缺課、打瞌睡、玩游戲現象幾乎沒有了,代碼和報告抄襲現象明顯降低,學生的積極性和主動性得到了極大的提高,小組經常討論問題,“傳幫帶”的理念得到了很好的實施,學生的動手實踐能力,查找資料能力和解決問題能力大大增強。
下面筆者針對該門課程的實踐教學談幾點體會與建議。
俗話說“知之者不如好之者,好之者不如樂之者。”興趣是最好的老師,是培養學生自主能動性和創新能力的動力[4]。筆者嘗試了三種激勵方式,第一:鼓勵學生平時(特別是授課前)進老師實驗室,觀摩老師開發的軟件作品,教師應該有針對性的演示其數據庫應用開發軟件作品,以此來激發學生的學習興趣。第二:可以在理論授課的同時,將知識點講解融入到軟件開發產品中,理論結合實踐,即時編程展現或代碼解析,讓理論看得見,特別是對那些枯燥乏味的知識,能極大的提高學生的積極性。第三:設計與現實生活息息相關的案例,內容與現實應用緊密結合,盡量不脫節,移動App應用,B/S模式應用系統或在上個年級的遺留系統上進行二次開發,也可以鼓勵學生自主命題。
敏捷開發強調小組成員以人為中心,突出自我管理能力,培養學生團隊榮譽感和責任感,隨意的自愿和自由組隊兩種方式均不可取。憑筆者前幾次的實踐經驗,自愿組隊往往會導致學習成績好、動手能力強的同學組隊到一起,結果導致了成績差,動手能力差的同學也到一起,造成兩級分化現象,有些組能夠很快完成,而有些組根本無法完成,只能抄襲。而隨機組隊也不行,會因學生個體的動手能力、學習能力、成績差異、性格等因素破壞學生的積極性和主動性。有意義的做法是教師介入的“自愿組隊”,教師在盡量保證同學自愿的基礎上,參考同學們學習成績和動手能力的差異,搭配組隊。自愿不等于隨意,好生需要帶動差生,要突出“傳幫帶”的理念,鼓勵學生幫組他人,虛心向同學學習,擔任項目開發周期中的不同角色,培養團隊意識,提高溝通能力,促進個人技能全面發展。
數據庫案例的選擇應貼近生活和應用,如基于JAVA、JSP、MVC和Android等軟件開發。整個教學過程始終圍繞選定的案例,堅持每日站立式會議,注意啟發式教學,同時,也要注意學生群體個體性差異,突出個性化發展。鼓勵學生進行角色互換,情境模擬,讓學生主動思考,掌握敏捷技能知識,培養解決實際問題的能力。
案例教學的培養目標不能太寬,切記將后續課程軟件工程和過多的敏捷開發的知識融入進來,應該以數據庫開發七個階段為主線,突出數據庫原理知識的應用和數據庫應用開發技術的掌握。
為了保證有效的實驗教學效果,在保證學時的基礎上,應堅持小班上課。利用我院和企業已有的合作平臺和經驗,進一步加大校企合作,積極聘請有經驗的企業工程師,培訓師來校做專題講座或授課。同時,鼓勵和幫助教師提高自身的業務水平和專業素養,特別是實踐動手教學能力的培養,定期安排教師短期進修或參加專業技能培訓等。
參考文獻:
[1] Robert C Martin. Agile software development-Principles, patterns, and practices[M]. 鄧輝,譯.北京:清華大學出版社,2003.
[2] Kent Beck,Cynthia Andres.解析極限編程:擁抱變化[M]. 雷劍文,李應樵,陳振沖,譯.北京:機械工業出版社,2011.
[3] 朱少民. 軟件工程敏捷方法的實驗框架及實施[J].計算機教育,2014(7):54-57.
[4] 楊天怡,胡新平,嚴薇,等. 創新教育與實踐教學創新[J].中國高等教育,2005(23):28-29.
(責任校對游星雅)
中圖分類號:G64
文獻標志碼:A
文章編號:1674-5884(2016)01-0037-03
作者簡介:肖小聰(1974-),男,湖南雙峰人,講師,博士研究生,主要從事數據庫開發、web服務和數據挖掘等教學與研究。
基金項目:湖南科技大學教學研究與改革項目(G31210,G31390)
收稿日期:20150924
doi:10.13582/j.cnki.1674-5884.2016.01.012