前言:想要寫出一篇引人入勝的文章?我們特意為您整理了結對編程軟件工程論文范文,希望能給你帶來靈感和參考,敬請閱讀。
1研究性教學
軟件工程研究性教學是一種實踐性較強的教育教學活動。與現有的軟件工程教學不同,研究性學習不再局限于對學生進行純粹書本知識的傳授,而是讓學生參加實踐活動,在實踐中學會學習和獲得各種能力。
1.1研究性教學作用
軟件工程研究性教學強調知識的聯系和運用,不僅是軟件工程學科知識的綜合運用,更是程序設計、數據庫、計算機網絡等領域知識的融會貫通。學生通過研究性學習,不但知道如何綜合運用學過的知識,還會在已經學過的知識之間建立一定的聯系,并主動學習新的知識。軟件工程研究性教學能夠通過合理的選題充分調動學生的學習興趣和積極性。研究性學習是一種帶有研究性質的綜合性學習。軟件工程研究性學習主要與傳統的接受性學習相對。一般來講,該學習方式是學生通過自己觀察、調查、訪談、分析、設計、實現、測試等方式獲取知識、得出結論、形成軟件產品,而不是由教師將現成的知識和結論傳遞式教給學生的學習方式。軟件工程研究性學習的本質在于讓學生親歷軟件開發問題的產生與方案形成的過程,使學生學會獨立思考、實踐和分析,實現發現問題、取得解決方案與學習三者之間的有機結合與高度統一。
研究性教學和學習有其獨特的好處與必要性。軟件工程課程包含了豐富的工程化思想和基本原理,然而,這些思想和原理需要通過實踐和探索使學生獲得切身體會。這種探究對學生的思維構成了挑戰,有利于思維能力的培養。探究過程要求綜合運用已有的知識經驗,有利于學生整合知識、學以致用,培養學生實事求是的科學精神和態度,促進學生學會合作、交流、傾聽、批判和反思。在探究過程中,學生經歷挫折與失敗、曲折與迂回、成功與興奮,從而最終理解科學的本質。軟件研究性學習引導學生自主獲得軟件開發相關知識或信息,對學生學會思維與實踐、加強能力培養、踐行可持續發展具有重要意義。
2軟件工程研究性教學案例
考慮到軟件工程的內容復雜性,作者選擇敏捷開發實踐的結對編程方法作為研究性教學的探究內容。敏捷開發是一個新的思路,但不是軟件開發的終極選擇。對于時間長、人數多的大型應用軟件的開發,文檔的管理與銜接作用是不可替代的。如何把敏捷的開發思路與傳統的“流水線工廠式”管理有機結合,是軟件開發組織者面臨的新課題。敏捷過程將整個軟件生命周期分解為若干個小的迭代周期,通過在每個迭代周期結束時交付階段性成果來獲取切實有效的客戶反饋,目的是希望通過建立及時的反饋機制,應對隨時可能出現的需求變更,并做出相應的調整,從而增強對軟件項目的控制能力。因此,敏捷過程對變化的環境具有更好的適應能力,相比于經典軟件開發過程的計劃性特征,敏捷過程在適應性上具有更大的優勢。極限編程實踐中有一個非常重要的原則就是結對編程,這里所謂的結對編程并非是一個人在編程,另一個在看著,另外一個人同樣起著非常重要的作用,他需要幫助編碼的人找到低級的失誤,防止其編碼出現方向性的錯誤,特別是當出現編碼的人不擅長解決的問題的時候,他會直接替換編碼的人進行編程。
結對編程(PairProgramming,PP)是一個非常直觀的概念,是指兩位程序員肩并肩地坐在同一臺電腦前,面對同一個顯示器,使用同一個鍵盤、同一個鼠標一起工作。他們一起進行分析、設計、寫測試用例、編碼、單元測試、集成測試、編寫文檔等工作,基本上所有的開發環節都是面對面、平等、互補地進行,并且兩人的角色可以隨時交換。結對編程的實施方式分為面對面結對和遠程結對兩種方式。面對面結對編程是指兩個程序員肩并肩坐在同一臺電腦前、在同一個軟件制品上一起工作的軟件開發方式。面對面結對編程的好處在于,程序員可以直接快速地交流,獲得高質量的代碼并增強程序員工作的樂趣。面對面結對編程最大的優勢就是交流非常方便,因為兩個人靠得很近,言語和手勢的交流非常自然,效果非常好。面對面交流沒有隔閡,兩個人互相看到對方的表情,產生和諧的氣氛,合作也非常愉快。面對面結對編程效率較高,因為一方看著另一方在工作,因此編程的一方就不會想別的事情或停下來關注其他事情,因而能集中精力完成工作,即存在一種“結對壓力”。面對面結對編程需要不定期地進行角色交換,以發揮兩個人的能力。當面對面結對編程環境配置不當的時候,交換角色時需要雙方一同站起來互換位置,然后再繼續工作,這樣就會導致停頓,引起不便和不順暢,往往會打斷雙方的思路。這個問題可以通過提供寬敞的結對環境來解決,例如,提供一個較大的電腦桌,雙方交換時只需要移動鍵盤和鼠標即可。環境受限的情況下,可以通過提供雙鍵盤和雙鼠標的方式解決,結對者可以在各自的鍵盤上工作,可通過系統來控制鍵盤和鼠標的切換。
鑒于全球化軟件發展趨勢的繼續,要求兩名開發者進行面對面的交流并不符合全球化軟件發展的需求。這就要求兩名程序員雖然在不同的地點,但是他們還能一起合作使用結對編程編寫代碼,這種方法被稱為分布式結對編程。
分布式結對編程是一種編程風格,兩個程序員在地理上是分布的,通過網絡在同一個軟件制品上同步工作。分布式結對編程可以克服面對面結對的一些不足,結對者通過網絡可以隨時隨地結對工作,提高了結對的機會。為了進行分布式結對編程,需要功能較為強大的結對工具支持結對者高效地工作。首先,需要共享的代碼編輯工具支持,一方的編輯工作能夠被另一方實時地看到,同時,代碼能夠進行編譯,以便能夠檢查語法錯誤,因此需要與現有的開發環境集成。第二,結對者需要充分地交流由于雙方在不同的地方,合適的交流工具是必要的,基本的交流工具包括基于文本的交流和基于語音的交流。基于文本的交流比較容易實施,但由于一方在編程,文本交流會造成干擾。語音交流是一個必然選擇,交流起來也比較自然,只是對網絡帶寬有一定的要求。語音交流只能聽到聲音,看不到對方的表情,影響進一步的了解。隨著網絡技術的發展,基于視頻的交流是今后的必然選擇。第三,角色交換支持。結對雙方經過一段時間交換角色,這是結對編程的特定要求。分布式結對編程的角色交換本質上就是對編輯器的控制,允許一方處于編輯狀態,另一方則處于察看狀態。第四,分布式結對編程還要支持用戶管理、發起結對等功能基于上述的內容分析,筆者將軟件工程研究性教學內容確定為結對編程方法與實踐的探索內容。首先,要求學生從理論上理解結對編程的特點、優勢和不足,然后,通過親身結對活動體會其中存在的不足和影響結對的重要因素,進而提出解決結對過程中的問題和設計方案,最后,通過軟件來實現這些方案。
3軟件工程研究性教學實施過程
根據以上的思路,筆者設計了軟件工程研究性教學的實施步驟。
(1)要求學生分析敏捷方法相比傳統的軟件過程方法的優勢,進而理解結對編程式敏捷方法的重要實踐原則。分發材料讓學生深入理解結對編程的優勢和實施過程。
(2)要求學生親身體驗結對過程,通過不同的學生結對編程,發現存在的問題和影響結對效果的因素
閱讀有關結對編程的文獻,了解影響結對效果的因素。學生通過個性、能力和性別等因素進行結對,發現存在的問題,例如,交換角色的不便因素和結對模式效率影響因素等。
(3)學生針對存在的問題提出解決方案。例如,根據不同的影響因素,可以開發結對模式評測軟件系統,匹配最佳的結對組合;結對環境擁擠帶來交換角色的不便,可以設計合適的設備環境,如采用雙顯示器、雙鍵盤和雙鼠標的硬件結構,開發相應的控制系統。在后續的教學中,利用軟件工程開發過程與方法來開發學生提出的結對系統。在分析階段,學生根據自己的體會提出軟件系統的需求;在設計階段,設計該系統的結構和算法;在實現階段,進行編碼和測試;在部署階段,進行安裝運行和修改不足。
(4)總結研究性學習效果。進行結對對比實驗,分析效果。學生總結一個學期的研究性學習過程,通過提出問題和解決問題的過程來理解軟件工程的方法和工程化思想,理解如何分析軟件的需求、設計、實現和部署。
4結語
從2011年開始,在本科生三年級的軟件工程課程教學中實施了軟件工程研究性教學。學生通過分組進行結對編程的實驗,發現實施過程中的問題,提出改進方案,并設計了軟件系統。在實施過程中,教師提供了研究資料,并給予了啟發式引導。學生積極性非常高,積極參與個性評測,總結結對組合模式,提出許多建設性的意見和系統方案。有部分組最終完成了系統的開發和軟件部署工作,開發的軟件入選結對實驗室的示范系統中,并被后續的學生使用,效果非常好。學生的一些工作被作者寫入軟件工程方法與實踐教材中。今后工作室將把這些經驗進一步擴展到其他課程(如程序設計課程、計算機基礎實驗課程)的教學實踐當中。
作者:竇萬峰 吉根林 單位:南京師范大學計算機學院