王 鈞
(甘肅農業大學 信息科學技術學院,甘肅 蘭州 730070)
基于敏捷開發模式的嵌入式實驗教學探索
——以農業院校為例
王 鈞
(甘肅農業大學 信息科學技術學院,甘肅 蘭州 730070)
“嵌入式系統”是一門涉及范圍廣、綜合性、實踐性強的課程。針對農業院校嵌入式系統實驗課程建設的總體目標及特點,分析了該課程在實驗教學過程中存在著實驗內容簡單、課程設置不合理、過分強調實驗結果等問題。通過闡述敏捷開發模式的意義,以提高學生的實際應用能力為目標,提出了“敏捷開發模式”結合嵌入式案例教學的實驗教學改革思路,并探討了在農業院校實施此教學方法的組織與實施策略。實踐證明,該教學方法在提高學生學習興趣、加深知識理解、培養實踐及創新能力等方面都具有積極的作用。
嵌入式系統;軟件工程;實驗教學;敏捷開發
DOI號:10.13320/j.cnki.jauhe.2017.0021
“嵌入式系統”作為一門理論與實際應用緊密結合的課程,實驗教學在其中發揮了至關重要的作用。嵌入式系統實驗作為該課程在教學過程中的重要組成部分,不但可以加深學生對嵌入式相關知識的理解,還能從多方面發掘學生的創造力,全面培養學生發現問題、分析問題以及解決問題的能力,對于全面提高學生的綜合素質和能力,都具有極其重要的意義[1]。
目前,大多數高校的嵌入式系統實驗教學都以傳統的驗證性實驗為主,在設置實驗教學內容的時候,普遍忽視了嵌入式軟、硬件的開發特點,只是簡簡單單的將理論知識與實驗方法進行了融合,學生在學習后普遍反映該課程的學習較為枯燥,整體教學效果不佳。因此,針對嵌入式系統課程的特點,如何提高實驗環節的教學質量,是培養高素質嵌入式人才的關鍵所在。
嵌入式系統是一門理論與實際應用緊密結合的課程,該課程的應用性相對較強,通過學習,要求學生全面了解和掌握嵌入式的相關理論知識,以及嵌入式的軟、硬件開發設計的一般方法,提升學生的動手能力和解決實際問題的能力。在實際的教學過程中,強調課程的“基礎性+應用性+綜合性”。基礎性是指授課內容應該涵蓋嵌入式系統的基礎理論知識,通過課堂講解和實驗環節加深學生對基礎知識的理解。應用性是指該課程的實踐性較強。甘肅農業大學信息科學技術學院通過“實驗教學+課程設計”的實踐教學模式,使學生能夠很好的將理論知識與實際應用緊密地結合起來,從而進一步加深學生對嵌入式開發的理解。綜合性是指該課程所涉及的知識面廣、課程內容多。學生在實際的學習過程中普遍感覺到該課程抽象且難以理解,教師講授起來較為困難,授課過程難以掌控。嵌入式系統課程在實際教學過程中所面臨如下問題。
1.專業跨度大。該課程所涉及的專業相對較多,不但包括通信工程、計算機工程、電子信息工程、自動控制、機電工程、和儀器儀表等,而且還與其他研究領域相互滲透,形成了新的研究方向。因此,該課程可以作為一個基礎性的研究平臺課,為其他相關專業提供服務。
2.綜合知識運用性相對較強。嵌入式系統的開發設計需要將軟、硬件相互結合,并且涵蓋了計算機網絡、軟件工程、計算機組成原理、計算機操作系統、自動控制原理等諸多專業的相關課程。如程序設計語言(匯編,C/C++,JAVA等)、操作系統、數字電路、微機原理、和芯片設計等課程,課程內容的綜合性相對較強。因此,該課程可以被認為是計算機類相關專業本科階段所學各種知識的綜合運用,學習該課程,可以有效提高學生對所學知識的綜合運用能力。
3.與實際應用緊密結合。該課程強調理論與實際應用緊密結合,實踐教學作為該課程的重要組成部分,它的質量將直接影響到該課程的實際教學效果。缺乏實踐教學環節的嵌入式系統課程只能算是“紙上談兵”,只有經歷了大量的實踐教學,才能使學生深刻地理解嵌入式系統的基本理論,熟練掌握嵌入式系統的開發方法。
(一)實驗內容簡單
目前,大多數農業院校的嵌入式實驗安排多以驗證性實驗為主,相對復雜的綜合性開發設計性實驗偏少,在實驗教學環節中,學生常常根據實驗教材上的內容機械地對實驗步驟進行模仿,由學生自己親自動手設計的實驗內容偏少;實驗內容的更新滯后,大多數實驗內容往往要使用多年,不能與嵌入式的最新技術結合,同時實驗內容的設置與社會實際需求聯系的不夠緊密。由于以上多種原因,造成目前的嵌入式培養模式不利于學生綜合能力和創新能力的培養。
(二)過分強調實驗結果
目前,大多數農業院校都存在著嵌入式實驗課時安排不足的問題,由于時間所限,教師為了完成教學任務,在實驗環節的設置上多以培養實驗技能為主。通過實驗,學生也只是學會了如何機械地使用和調整各種設備儀器,以及如何按部就班地按照實驗步驟進行實驗和處理實驗數據。學生在整個實驗過程中更加關注如何得出符合理論的實驗結果,而對實驗中出現的各種現象和結果很少進行獨立的思考、分析、研究。嵌入式系統實驗對學生掌握和理解嵌入式技術的幫助很小,無法從中深刻的體會到嵌入式技術的生命力以及應用前景。因此,整個實驗教學的實際教學效果欠佳。
(三)實驗課程設置不合理
目前,大多數農業院校將嵌入式系統實驗的課時設置為16學時,相對課程的難易程度以及重要性來說,學時分配相對較少,加之學生在思想上沒有意識到嵌入式實驗對嵌入式軟、硬件綜合能力培養的重要性,實驗前期的準備不夠充分,學生在實驗過程中對實驗指導教師的依賴性較強。實驗課上,指導教師花費了大量的時間和精力來講解嵌入式實驗的基本原理以及實驗平臺的使用和操作方法,僅從剩余時間來看,學生只能按照老師的具體要求進行操作,沒有任何的自行設計。除此之外,學生對親自動手實踐缺乏積極性,很難對嵌入式系統實驗提起任何興趣,特別是當他們遇到新的技術或新的難題就更加缺乏信心了。
針對以上問題,為了在有限的課時內提高嵌入式實驗教學質量,應該對嵌入式實驗課程教學內容進行改進,在課程設置上通過引入敏捷開發模式,并結合嵌入式案例教學等教學手段和方法,激發學生的學習興趣,在實驗課程中,轉變老師與學生的角色,強調“學生”在整個實驗中的主體地位,培養學生應用所學知識解決實際問題的能力和創新能力。
2001年雪鳥會議后,敏捷開發法開始獲得各界的認可,特別是受到軟件開發者的普遍歡迎。到今天,這種開發法已經在大量軟件項目當中得到了廣泛的應用,并且獲得了成功。敏捷開發通常以用戶的需求進化為基礎,利用反復迭代、循序漸進等方法完成相關項目的開發。在敏捷開發的開始階段,整個項目將分為多個小的子項目,每個子項目都具備可集成、可視以及可運行、使用的特征,開發人員對每個子項目分別進行開發,并且其成果都必須經過獨立的測試。也就是說,這種開發方法是將一個大的開發項目進行分割,將它分成多個獨立運行、相互聯系,并且在整個開發過程中處于可用狀態的小項目,對它們分別完成開發。極限編程是一種近螺旋式敏捷開發方法,同時也是一種靈巧的、輕量級的軟件工程開發方法。在項目的開發過程中,開發人員會將一個復雜的開發過程分解為許多個相對較為簡單的小的開發周期,并且強調項目開發的嚴謹性和周密性[2]。它以交流、樸素、反饋和勇氣為基礎和價值觀,使得在整個項目的開發過程中,可以使客戶與開發人員及時了解和掌握項目的最新開發進度、變化以及待解決的問題和困難等,并根據開發項目的實際情況及時調整項目的開發過程,即認為軟件項目的開發都可以從簡入手、加強相互交流、尋求反饋以及勇于實事求是4個方面入手來進行改善[3,4]。
在實際嵌入式開發過程中,嵌入式企業管理者為了提高嵌入式系統的軟、硬件開發質量,往往會制定許多項目開發管理規則以及設計方法,嵌入式系統的開發質量也隨之得到了較大幅度的提升。但伴隨著嵌入式理論的不斷發展,整個系統的軟、硬件開發流程和規范也逐漸變得越來越復雜,且讓人難于理解和實施。
極限編程方法由于具有輕載、基于時間、緊湊、并行且基于構件的項目開發過程的特點,使得這種開發方法可以被應用于嵌入式系統的開發設計和實驗教學環節。通過極限編程方法與嵌入式系統實驗教學的結合,在整個實驗教學過程中,要求學生結對成組,以強帶弱;指導教師在整個實驗教學環節中,根據具體的案例進行實驗內容的設置,并且將實驗教學內容巧妙地隱含在嵌入式系統的開發項目中,讓學生自己發現實驗過程中所存在的問題,并且通過自己的獨立思考和教師的指導獨立解決這些問題[5]。在完成實驗項目的同時,也掌握了相關的知識,提高了學生自行解決問題的能力。整個實驗的設置,既要考慮如何讓學生學會發現問題、分析問題以及解決問題,也要充分考慮如何培養學生的創新意識、創新能力以及自主學習的能力。
基于敏捷開發的嵌入式實驗教學首先指導教師會根據課程教學大綱和知識點來確定每節實驗課的實驗內容,同時按照知識點將實驗內容分解為多個簡單的模塊,然后由學生自行完成各個模塊的開發、測試,最后寒磣系統的集成及集成測試,在測試過程中如果發現問題,要求學生及時進行改進,直至整個系統能夠正常運用(如圖1所示)。

圖1 基于敏捷開發的嵌入式實驗教學模式示意圖
目前,典型的嵌入式系統往往包括:應用層、系統軟件層、中間層和硬件層[6](如圖2所示)。因此,嵌入式系統的開發也是在以上幾個層次之上發生的。我校的嵌入式系統實驗課根據嵌入式開發內容與嵌入式平臺間的相互關系,大致地將嵌入式系統實驗分為4種類型,即基于應用層開發實驗、基于硬件的純軟件開發實驗、基于軟硬件協同開發實驗以及純硬件開發實驗,4種開發實驗的類型與特征描述如表1所示。


圖2 嵌入式系統層次架構
農業院校采用敏捷開發模式進行嵌入式實驗教學,其主要特色可以歸納為以下幾點。
1.在農業院校嵌入式實驗教學中引入敏捷開發模式不但可以降低實驗的難度,而且可以培養學生應用軟件工程思想進行嵌入式開發的習慣,包括如何運用敏捷開發的方法來發現、分析、解決嵌入式開發過程中所遇到的各種難題,從而提升學生運用所學知識解決問題的能力和創造力。
2.結合農業院校的特點,該課程在實驗題目的選擇上,多以解決具體農業問題為主,將農業與嵌入式系統有機的結合起來,讓學生在掌握嵌入式和農業知識的同時,又培養了學生如何運用所學知識解決實際問題的能力。
3.整個實驗教學過程中,以具體的案例為線索,讓學生了解和掌握案例中所涉及的相關理論知識,并且通過運用其中的技術手段來效仿該案例,完成新系統的開發設計。
4.學生通過參與實驗掌握極限編程的基本方法,增強學生的團隊合作意識,提高他們的自學能力和動手解決實際問題的能力。
(一)組織與實施策略
在遵循敏捷開發方法核心思想的基礎上,充分利用極限編程的理念,結合嵌入式系統實驗課程的特點,將嵌入式系統課程實驗教學與敏捷開發方法相互結合,可以幫助學生理解嵌入式系統軟、硬件開發需求與嵌入式系統測試及開發的關系,使學生在掌握和應用嵌入式的關鍵性技術的同時,了解和掌握響應客戶需求變化、結對編程、測試驅動以及重構等敏捷開發方法中的關鍵技術。同時,嵌入式實驗課采用“案例驅動”的教學模式,向學生講授敏捷開發方法在實際項目開發中的應用,指導教師組織學生組成項目小組完成規定題目的敏捷開發,在整個實驗過程中鼓勵小組成員之間加強溝通與合作,并對結對編程、測試驅動、重構、持續集成等敏捷方法進行指導,協助項目組完成實驗項目。
(二)實驗教學實施過程
1.案例的選取。目前,大多數農業院校都存在著嵌入式系統實驗教學環節設置不合理的情況。我校嵌入式系統實驗課所涉及的題目一般由教師指定,同時也鼓勵學生向指導教師推薦,但要征得指導教師的認可方可使用。由于該課程實驗學時相對緊張,實驗選題的難度不宜太大,同時結合農業院校的特點,在實驗題目的選擇上偏向精準農業、設施農業以及智慧農業等相關方向,課程教學的目標就是通過利用嵌入式系統課程的實驗教學環節,讓學生深刻體會嵌入式系統的軟、硬件開發方法,在實驗過程中注重完成質量,要求作品的質量能接近或達到實際使用的程度。已有的選題包括:農產品冷鏈配送測控系統、智能溫室測控系統設計等。實驗題目的選擇更多地考慮到學生知識的綜合運用以及創新能力的培養。
2.構建敏捷開發實驗環境。由于在實驗環節引入了敏捷開發方法,將現有的實驗箱和計算機擺放將做相應的調整,使得新的實驗環境便于小組成員間以及各小組間的高效率交流,并且在實驗室中配備了白板,方便學生針對某一問題展開充分的討論。
除此之外,實驗小組的每一位成員都將以客戶、開發人員、項目經理、測試人員等角色出現在同一個開放的環境中。指導教師通常以“客戶”的身份出現在實驗中,并且負責對實驗小組進行指導,每個實驗小組將從中挑選一名組織、溝通能力相對較強的學生作為該組的項目經理,其主要職責是負責對項目進度和資源進行控制和管理,其余兩名同學按照“以強帶弱”的原則組成編程小組。在項目的開發設計完成后,挑選其他組的編程人員組成本組的測試小組,測試小組的人員交叉負責項目的測試、驗收和管理。
3.需求分析與管理。指導教師全程參與并指導學生進行實驗,按照敏捷開發方法的核心思想,指導教師和學生將把各種需求轉換成多個小的模塊,這些模塊根據條件的不同有可能又會被實驗小組再次拆解成更小的模塊或者將它們組合起來,所有被重新整合的模塊都會被記錄在一些小卡片上,每個模塊的功能將被學生在每周一次的實驗課上完成。在實驗項目的開始階段,指導教師會幫助各個實驗小組根據模塊的重要程度來依次確定各個模塊的優先級,而學生則根據各個需求模塊的開發風險來確定需求模塊的開發順序。通常風險較高的需求模塊往往被優先進行開發,同時指導教師和學生分別從不同角度對各個模塊進行評估,根據最終的評估結果把這些模塊放在不同的開發周期里,指導教師同學生一起商議為整個實驗制定一個盡可能詳細、全面的開發計劃。最后,測試人員將根據“客戶”的實際需求對各個需求模塊進行測試,發現問題并反饋,使實驗項目不斷完善。
4.基于“測試驅動”的項目開發。極限編程的實際開發過程通常是由許多個基于“測試驅動”的開發周期組成,實驗項目的外層設計過程往往都是緊緊圍繞著這些開發周期來進行的,例如實驗項目的計劃、設計等。我校每周一次的實驗課被看成一個開發周期,這其中包含了很多個測試單元。在項目的起始階段,由于項目毫無進展,以至于對每個模塊的單元測試都不會成功,但是隨著實驗進程的深入,各個模塊的功能將逐漸被實現,能夠通過單元測試的模塊也將逐漸增多。極限編程正是利用這種指導思想使指導教師和學生很容易在項目的開發過程中檢驗既定的開發任務是否完成。除此之外,極限編程還利用設計走查、代碼走查、重構等方法來實現系統的重整和優化。這其中也會不斷的進行單元測試以及系統功能測試,極限編程正是利用這種方法來保證重整和優化后的系統仍能滿足“客戶”的所有需求。
5.結對編程。在實驗項目的開發過程中,按照“以強帶弱”的原則將兩個學生結對組成編程小組,他們共同使用一臺計算機和試驗箱進行實驗項目的開發設計。這種結對編程的好處是:其中1個人在進行項目開發設計的時候,另外1人可以對實驗項目的開發設計進行思考,在他的頭腦中始終保持總體的設計概念。另外,當實驗項目在開發設計階段遇到困難的時候,編程小組的成員之間可以互換位置由另一個成員來完成,但如果遇到的難題兩人都無法解決,兩個成員之間便可進行交流及討論,而他們之間的交流很有可能被其他項目組成員或指導教師聽到,并可能給予幫助。極限編程正是利用這種結對編程的方式使項目的進展更加順暢和有章可循。與此同時,結對編程能夠使整個實驗更具有娛樂性和社交性,增強學生的興趣。另外,每一位學生在實驗項目的開發過程中都可以修改其他人的開發設計方案,但要嚴格遵守嵌入式系統的開發規范和設計方法,同時要保證修改后新的方案能通過隨后進行的單元測試。
6.實驗項目測試。極限編程要求實驗小組成員在開始本組編程實驗之前必須首先對各個模塊進行單元測試。每次實驗小組除了要對已完成開發測試的模塊進行整合外,還要對整合后的新模塊進行新的測試,包括在實驗過程中進行的任何嵌入模塊的走查和修改,都要求實驗小組成員對其進行新的單元測試。如果其中發現了任何問題,實驗小組就會增加新的單元測試,確保每個模塊能夠正常運行。根據極限編程的要求,在實驗過程中除了有常規的單元測試外,還包括功能測試、集成測試、壓力測試、和系統測試等[7]。所有的測試內容都是極限編程中最為重要的文檔,所以在實驗結束后,實驗所涉及的所有測試過程和結果都要寫入最終的實驗報告。
7.實驗項目結果評審。在實驗結束以后,學生將根據本組實驗的完成情況向指導教師提交實驗報告并進行實驗答辯,指導教師對其實驗成果進行評估打分。對表現優異的學生鼓勵其撰寫和發表科技論文,對有興趣進一步學習的學生,指導教師將鼓勵他們組成興趣小組,幫助他們完善作品,參加全國大學生嵌入式設計大賽。最后,指導教師將針對個人和實驗小組在實驗過程中的總體表現和實驗完成情況進行總結和點評,在指出他們存在不足的同時,幫助學生整理敏捷開發過程中的技術內容,從而提高學生對嵌入式學習的積極性,但也要從中指出他們在實驗過程中存在的不足。
敏捷開發作為一種新興的軟件工程的開發方法,很多實際方法還在研究中。在農業院校的嵌入式實驗課程中引入敏捷開發方法,不僅可以使本校學生加深理解、掌握嵌入式課程和相關農業的理論知識,更能讓他們懂得如何應用所學知識來解決實際問題。敏捷開發模式不僅能夠在實驗課程的第一線培養農業院校學生應用知識解決問題的能力,還能從多方面發掘學生的創造力,全面培養學生發現問題、分析問題以及解決問題的思想和方法,提高了學生的綜合素質和能力,包括學生的實踐能力、動手能力、分析能力、應變能力、交流能力、團隊合作能力。最關鍵的是在這種以“項目驅動”為背景的實驗教學中,這種教學方法既體現了指導教師在實驗過程中的主導作用又充分的發揮了學生自身的主體作用,更加體現了現代高等教育的新型教學模式。
在農業院校將敏捷開發模式與嵌入式實驗課相結合在增加實驗復雜度的同時,也對農業院校的教師提出了更高的要求。首先,指導教師在題目的選擇上要考慮如何將農業與嵌入式結合在一起,而且還要根據具體的實驗內容將嵌入式系統實驗教學和敏捷開發模式融合起來。其次,要求農業院校的指導教師在實驗環節中能夠較為靈活地運用敏捷開發的思想。最后,要求指導教師在實驗過程中能夠給予學生正確地指導。
[1] 劉文定,郭文會.“自動控制理論”綜合設計性實驗探索與實踐[J].中國林業教育,2009(27):68-70.
[2] 張林.軟件開發模式的演進[J].硅谷,2011(12):24-25.
[3] 張志敏,杜景龍,連達軍.基于敏捷開發模式的“GIS軟件工程”實驗教學[J].實驗室研究與探索,2014,33(11):205-207.
[4] 陳昊,明仲.在軟件工程實驗教學中引入敏捷方法的探索[J].計算機教育,2008(24): 46-47.
[5] 孔峰. 面向創新能力培養的數據庫課程實驗教學改革[J].中國現代教育裝備,2010(23):107-109.
[6] 榮國平,劉天宇,謝明娟.嵌入式系統開發中敏捷方法的應用研究綜述[J].軟件學報,2014,25(2):267-283.
[7] 廖新.糧基于任務調度的自動測試方法及系統實現[D].成都:電子科技大學,2011.
(編輯:劉偉霄)
2016-11-06
王 鈞(1982-),碩士,講師,主要研究方向:嵌入式系統。
G642
A
1008-6927(2017)01-0096-06