白魚秀 鄭歡歡
摘要:針對傳統(tǒng)瀑布模型在軟件工程實踐課程中的不足,結合敏捷開發(fā)方法的優(yōu)勢,提出一種適合軟件工程實踐課程的教學方法,并給出了相應的實施方法。實踐表明,該方法能有效激發(fā)學生的學習積極性,加深其對軟件工程理論的理解,提高其實踐動手能力和軟件開發(fā)能力。
關鍵詞:敏捷開發(fā);軟件工程;瀑布模型;教學實踐
中圖分類號:TP311.5
文獻標志碼:A
文章編號:1006-8228(2017)01-85-03
0.引言
“軟件工程”是計算機專業(yè)學生的必修課。學生通過該課程的學習,掌握軟件項目開發(fā)和維護的一般過程。該課程必須通過實踐操作,才能讓學生深入的理解和掌握軟件工程的基本理論。
目前一般的軟件工程實踐課程,采用傳統(tǒng)的瀑布模型進行開發(fā)。傳統(tǒng)的瀑布模型,其基本思路是各項活動按順序自頂向下,相互銜接如同瀑布一樣。它的特點是強調文檔,前一個階段的輸出就是后一個階段的輸入,文檔是各個階段銜接的必要信息,軟件產品的“模樣”只有到了開發(fā)后期才能看到。但是學生一般沒有開發(fā)經驗,很難一步到位圓滿的完成各個階段的任務,并且學生普遍對撰寫文檔不感興趣,繁冗的文檔增加了學生的工作量,降低了學生軟件開發(fā)的積極性。
1.敏捷開發(fā)方法
為了使軟件開發(fā)團隊具有高效工作和快速響應變化的能力。2001年召開的研討軟件過程未來發(fā)展趨勢的會議上,17位著名的軟件專家聯合起草了敏捷軟件開發(fā)宣言。敏捷軟件開發(fā)宣言主要由四個簡單的價值觀聲明組成:人和交互重于過程和工具;可以工作的軟件重于面面俱到的文檔;客戶合作重于合作談判;隨時應對變化重于遵循計劃。
“敏捷”意味著快速,簡單,靈活。敏捷開發(fā)過程強調以人為本,注重編程中人的自我特長發(fā)揮。強調軟件開發(fā)的主體是程序,文檔是為軟件開發(fā)服務的,而不是開發(fā)的全部。敏捷開發(fā)模型適合于中、小型軟件系統(tǒng)。對于難以分解的大型應用軟件,需要分布式開發(fā)的應用軟件等不適合使用敏捷開發(fā)。
敏捷開發(fā)是目前公司使用最多的軟件開發(fā)過程。敏捷開發(fā)集思廣益,博取眾長,使得每個人的能力都能得到更好的體現,并且敏捷開發(fā)能在短時間內開發(fā)出可運行的系統(tǒng),而軟件工程實踐課程通常是在2-3周開發(fā)一個小型軟件系統(tǒng)。把敏捷開發(fā)應用在軟件工程實踐課程中,可以更好的調動學生的積極性,培養(yǎng)學生的合作意識和團隊精神,使得學生更好的了解公司中開發(fā)軟件產品的流程,為今后更深入的學習和從事軟件工作打下良好的基礎。所以敏捷開發(fā)方法特別適合在軟件工程實踐課程中運用。
2.實施方法
2.1項目分組
學生根據自愿原則,自由組合分組,最多4-5個學生為一組,組成敏捷開發(fā)小組,共同完成項目開發(fā)。小組推選一個人擔任項目經理,并扮演Scrum Master角色,負責項目的進度控制和組織開展每天的站立會議。教師扮演“客戶”的角色全程參與和指導每個小組的軟件項目開發(fā)。
2.2項目選題
教師向學生提供一系列的軟件工程實踐課程題目,每個小組從中挑選一個或者自定義一個自己小組感興趣的題目,自定義的題目必須得到教師允許方可開展。
2.3項目開展
每個小組按照敏捷開發(fā)的工作流程開展自己的項目,如圖1所示。
(1)開展迭代計劃會議。軟件需求是軟件項目成敗的最關鍵因素。啟動項目前,小組開展迭代計劃會議,充分討論理解項目需求,和客戶(教師)確定整個項目的具體需求,對任務和完成標準達成一致,并且確定小組內每個成員的工作量及交付內容。
(2)結對編程。小組內自由組合,兩個學生在同一臺計算機上共同編寫解決同一問題的程序代碼,通常一個人負責編碼,另一個人對代碼進行審查和測試,以保證代碼的正確性和可讀性。小組內兩天變換一次結對搭檔,從而互相學習好的編程思想和編程風格,提升代碼質量,促進知識傳播。同時培養(yǎng)團隊成員積極、主動的心態(tài)和對方溝通合作。
(3)站立會議。每個小組每天上午10點進行15分鐘的站立會議,溝通自己昨天做了什么,今天計劃做什么和遇到的問題。這樣,不僅可以督促小組內每個人每天按期完成任務,增加小組的凝聚力,而且能及時暴露問題,大家集思廣益,解決問題,而不會造成一個人遇到瓶頸而導致整個項目進度的延期。
(4)任務看板。每個小組配備白板以便充分展開討論。把將要做的任務,正在做的任務和已經完成的任務貼在白板上,不同顏色表示不同的重要程度。小組成員各自標明自己負責的任務。Scrum Master根據每日站立會議的匯報情況及時更新任務看板上的燃盡圖。
(5)持續(xù)集成。每天進行一次代碼集成。強調程序代碼屬于整個開發(fā)小組集體所有,小組成員任何一Ax,t任何一行代碼的修改,都可能對整個項目產生嚴重的影響。每個成員提交的代碼必須保證整個項目正確性,必須對全部代碼的質量負責。
(6)代碼回顧。小組集體每天大概運用二十分鐘到四十分鐘進行代碼回顧,及早的發(fā)現代碼中潛藏的問題,保證代碼的質量。并且對代碼進行重構,優(yōu)化和調整代碼的內部結構,做到低耦合,高內聚。
(7)技術講座。小組每周開展一次技術講座,分享好的經驗和總結需要改進的地方,從而提高所有項目組的技術水平。進而激發(fā)所有小組的潛能,加強協(xié)作,提高大家整體的軟件開發(fā)水平。
(8)文檔編寫。敏捷開發(fā)不是不編寫文檔只寫代碼,而是避免浪費,只編寫必要的文檔,小組成員集體合作,共同完成軟件實踐課程報告的編寫。
2.4項目考核
軟件工程實踐課程結束時,每個小組提交軟件工程實踐課程報告并進行項目答辯,對其開發(fā)成果進行評估,鼓勵學生撰寫科技小論文,整理發(fā)表。項目考核分為教師打分和其他小組打分,考核的依據主要是文檔系統(tǒng)的難易程度和功能(20%),論文內容和格式(40%),答辯表述(40%),項目小組成員輪流發(fā)言,分別介紹自己在項目中所完成的任務和貢獻,并總結分享自己在此次項目開發(fā)中的收獲成果。
3.結束語
本文針對傳統(tǒng)的瀑布模型在軟件工程實踐課程中的弊端,提出了把敏捷開發(fā)方法引入到軟件工程實踐課程中。通過對學生實際軟件工程實踐課程的跟蹤發(fā)現,此方法可以極大的激發(fā)學生的興趣,調動學生的科研積極性,使得學生在輕松歡快的氛圍中更深入理解和掌握軟件開發(fā)的整個流程,并熟悉敏捷開發(fā)方法在項目開發(fā)中的實際應用。