軟件工程項目驅動實踐能力的培養
時間:2022-06-17 03:16:02
導語:軟件工程項目驅動實踐能力的培養一文來源于網友上傳,不代表本站觀點,若需要原創文章可咨詢客服老師,歡迎參考。
摘要:軟件工程實踐教學與理論教學存在脫節問題,學生實踐能力培養較為薄弱,與市場需求不匹配。為能夠提高軟件工程實踐教學,對目前軟件工程課程教學現狀進行分析,提出了應對的軟件工程教學的措施,通過案例教學,使學生理解軟件開發過程中的知識點,把抽象的知識具體化、形象化,以輔助學生理解理論與實踐的知識。在課下,教師提供必要的項目案例,學生多借鑒和吸收實際項目開發經驗;通過慕課、在線課堂等,對理論知識的學習;在課堂上,教師根據學生提出的問題進行答疑、解惑。實踐課學生選擇項目,利用項目完成情況對學生進行實踐能力的考核。實踐課程的項目驅動教學,利用所掌握的知識,鍛煉學生的動手能力,項目與將來參加競賽、畢業設計等有一定關系。通過項目的深入持續的開發,不斷提升學生動手能力。通過實踐證明了提出的應對措施和實施過程有效,提高了學生的軟件工程素質。
關鍵詞:案例教學;軟件工程;項目驅動;案例實施
軟件工程是一門指導軟件開發和維護的一門工程學科[1],2002年為了適應市場需求,教育部把軟件工程列為新增專業[2],而市場對軟件開發人員持續的需要,軟件工程專業一直是熱門專業,就業好、薪資高,受到越來越多的學生選擇這個專業。隨著人工智能作為國家戰略,對軟件人才的需求繼續擴大。軟件工程專業課程設置都是圍繞軟件開發和維護的內容設置的,使培養出來的學生能夠勝任軟件開發和維護。而軟件開發需要學生具備一定的實踐動手能力,能夠綜合運用多種計算機知識,例如程序設計語言、數據結構、計算機網絡、操作系統、數據庫原理等[2]。實踐能力的培養不是知識的傳播,而是知識的運用,大多數學生在學習過程中,有一定的難度,容易造成學生無法繼續堅持學習。《軟件工程》課程是計算機類的核心課程,對于軟件工程專業更是核心課程。《軟件工程》課程是理論和實踐都要并重的課程,受課時的限制、課程的難度、學生基礎等因素,往往達不到課程設置的目標。傳統的理論教學模式需要進一步改革,以彌補課時不足、學生基礎薄弱、缺少實踐練習等缺陷。為了更好掌握《軟件工程》課程中的知識,本文通過對目前《軟件工程》課程的不足進行分析,提出針對性的措施,給出詳細的實施過程,以提高學生的實踐動手能力。使培養的學生具有分析問題、解決問題的能力,有團隊精神,培養學生學習興趣。在學生項目實踐練習中,結合后期的畢業設計、畢業實習、競賽及大學生創新項目等目標,進行長期一致性規劃設計,減少學生的重復勞動,使學生的實踐項目具有一定深度和廣度,與市場需求的軟件盡量接軌,為學生就業上崗打好基礎。
1《軟件工程》課程教學現狀分析
《軟件工程》課程理論知識是從軟件開發經驗中總結出來的,對軟件開發初學者具有一定的指導意義,使初學者能夠快速地掌握軟件開發,少走彎路,把別人的經驗變為自己的經驗,因此學習《軟件工程》課程,能使初學者更好地掌握軟件開發知識,并獲得一定的軟件開發經驗。軟件開發是為用戶服務的,而用戶對軟件的需求也是不斷變化的,從功能、性能、硬件環境等方面,對軟件開發具有一定的要求和約束,因此開發出來的軟件常常需要進行維護。在軟件開發和維護的過程中,出現了很多問題,例如需求不明確,開發的軟件不是用戶真正需要的軟件等。軟件開發過程中的這些問題,即軟件危機,為了解決這個問題,提出了軟件工程的概念。讓軟件開發盡可能擺脫軟件危機,在成本、效率、質量等方面都滿足用戶和開發者的要求。而在《軟件工程》課程的教學過程中,出現了一些問題,具體表現在如下方面。1.1理論教學抽象。《軟件工程》課程的理論知識是從軟件開發經驗中總結出來的,這些經驗被證明是非常有指導意義的。而很多學生剛接觸這些理論知識,沒有編程的經驗,無法理解書中所講述的知識,沒有引起共鳴。學生在學習理論知識時,非常抽象。面對如此抽象的理論知識,學生提不起學習興趣,甚至產生了厭學情緒[3]。另外,教材中的案例,多數是從國外教材中翻譯過來,與學生的知識背景不符,學生無法理解案例的背景知識,案例并沒有起到應有的作用。1.2基礎課程多。《軟件工程》課程教學要求學生需要學習前期課程[3],例如程序設計語言、數據結構和算法、數據庫原理、計算機網絡、操作系統等,學生對前期課程掌握程度差異性較大,這給教學帶來了一定的難度。在教學過程中,需要對前期的課程進行復習,打好基礎。另外,學生掌握的前期課程,對知識的綜合應用練習較少,大多數表現在知識的掌握上。開發軟件系統需要綜合運用前期課程知識,這給學生軟件開發能力的培養,帶來了一定的困難。1.3學生動手實踐機會少。前期的課程教學中,往往都是小程序的練習,這與軟件系統開發的要求相比,差距非常大。學生還不具有軟件開發經驗,從未在軟件開發上進行專門的訓練[4],對軟件開發就是編寫程序的思想還比較嚴重。因此,軟件工程教學非常有必要對學生進行專門的實踐練習,通過項目實踐讓學生把所學的知識轉化為軟件,對知識的掌握提出更高的要求。1.4缺乏必要案例學習。軟件工程教材中出現的案例,一般都是為了解釋理論知識的,個別案例是從國外的教材中翻譯過來的,并不適合學生閱讀和學習。教師有必要在教學中挑選合適的案例進行講述。目前網絡資源比較豐富,通過課下整理案例,相信可以挑選出合適的案例作為教學內容,幫助學生理解理論知識。另外,對實踐教學內容,教師需要挑選一些完整的案例,讓學生學習和閱讀,這些案例中的程序能夠運行,學生根據案例的文檔和資料,理解軟件工程中的相關理論知識[5]。1.5缺乏較為直接的視頻教學。學生的基礎知識參差不齊,對于基礎較差的學生,簡單的語言介紹,并不能讓學生掌握其中的含義,需要動手演示軟件開發過程。對于課時限制的教學來說,課堂現場展示軟件開發過程并不現實。因此教師需要提供一些視頻教學素材,讓學生在課下觀看[6]。1.6學生缺乏學習毅力。軟件開發是腦力勞動,需要學生的抽象思維能力。軟件開發不同于現實中的硬件制作過程,無法觸摸到實際的產品,軟件開發是邏輯產品,制作過程抽象。學生在學習過程中,遇到較大的困難,如果這些困難無法解決,學生不能明白其中的含義,勢必打擊學生學習的積極性。有些學生在學習中,可能堅持一段時間后,主動選擇了放棄;一方面是學生學習方法不對,沒有找到有效的學習辦法,另一方面,沒有專家的指導,自己遇到困難一時無法解決,浪費了大量的時間,學生有時候并不愿意去請教教師或同學,或者去找資料解決問題。也就是說,學生在學習軟件開發一段時間后,當遇到困難無法解決,或感覺學習非常吃力的時候,選擇了放棄。其實剛開始遇到困難是正常的,只要不放棄,學習方法不對的時候,請教老師調整學習方法,就能找到正確的學習方法。另外,學生要多交流,主動尋求幫助,解決遇到的困難。1.7教師素質有待提高。軟件開發需要老師指導,如果教師的軟件開發水平較高,就可以很好地指導學生進行學習。然而,高校在招聘教師的時候,比較看重學歷,對教師的軟件開發水平并未做過多的考核。即使有豐富經驗的一線開發人員,如果想在高校從事教學,而學歷較低,不予錄用。其實,目前高校中比較缺乏具有豐富經驗的軟件開發人員。需要提升教師的軟件開發能力才能滿足市場的需要[7]。當前,移動手持設備開發,例如Android、IOS開發等,都需要教師學習新的知識,才能夠指導學生進行軟件開發。當前市場上軟件開發人員工資普遍較高,高校的薪酬很難招到水平較高的軟件開發人員。1.8課程考核形式單一。軟件工程課程的考核以平時作業和期末的考試為主,并沒有突出學生的實踐動手能力。過程的考核也非常重要,因此需要對課程考核進行改進。突出學生的動手能力,過程考核督促學生在平時的學習中,花費足夠的時間學習。
2軟件工程課程項目驅動教學設計
軟件工程教學存在很多不足,針對這些不足進行改進,提高學生的動手能力。軟件工程教學,不僅僅是講述軟件工程的理論,同時也要考慮學生的基礎水平,針對基礎水平不同的學生,提出個性化教學。既要講授理論知識,也要鍛煉學生的動手能力。從學生方面提出針對性的教學,給學生提供學習環境,有動手練習的機會。教師本人不斷提高自己業務水平,適應教學需求,迎合市場對人才需要,培養合格的軟件開發人才。從學生各個方面考慮,有必要對學生進行長遠規劃,盡可能減少重復的勞動,空出更多的學習時間。學生在后期還要進行畢業設計、畢業實習、參加競賽或者主持及參加大學生創新項目等,這些內容都可以與軟件工程的課程聯系起來,統籌規劃,長遠考慮學生的實踐能力培養。如圖1所示,項目驅動解決方案示意圖。就從以下幾個方面提出教學設計。2.1補習前序薄弱課程。某些學生在前序課程中,對基礎知識掌握較為薄弱,能力較差的學生,可在教學中,進行必要的知識補充,以便學生具備軟件開發的基礎知識。另外,也要對學生進行必要的統計,以便摸底學生的基礎水平,可以借助網絡試卷測試,客觀評價學生的基礎水平。另外,借助慕課、網絡資源課等網絡資源,學生進行復習相關知識,以加強基礎知識的掌握。教師要引導、輔助、創造學習環境等,使學生盡快地補充薄弱內容。2.2理論教學案例化。對于理論抽象難懂的問題,需要用更具體的內容進行講述,教師在教學過程中,需要挑選合適的案例進行講述,以具體的案例形式,使學生更容易理解。其實,案例的選擇需要教師篩選,有些適合理論教學,有些適合實踐教學,教師要做分類。案例盡量選擇學生熟悉的內容,有利于學生利用情景再現其過程。例如學生管理系統,需要學生選課、查課表等,學生在日常生活中,就已經使用過學生管理系統,對其中的操作比較熟悉,學生接觸到熟悉的案例,更容易理解和接受[5]。傳統的師傅帶徒弟的模式,仍然具有一定的借鑒意義。在軟件開發教學過程中,如果學生能夠在真實的案例中學習到相關知識,舉一反三,就可以掌握軟件開發的精髓。案例教學越來越重要,相關的軟件培訓公司就是盡可能的少講理論知識,直接動手傳授軟件開發過程[10]。通過這種模式,學生的動手能力得到培養。而大學課程教學,缺少必要的課時或相關培訓教師,因此通過購買案例進行課下教學,案例的內容要跟蹤前沿技術,學生跟著案例就可以進行學到相關的知識。一個案例的學習,積累了相關的經驗,學生就可以通過閱讀大量的案例,進行其他知識的掌握。文檔代碼的閱讀量非常重要,是借鑒別人的經驗,從中吸取精華,在自己的軟件開發中,運用這些知識,可以加快軟件的開發,提高軟件開發質量,其實也是軟件重用的思想。軟件開發不提倡自己編寫軟件的各個內容,有些內容可以通過重用,快速地搭建軟件,節約了時間和成本。學生需要有軟件重用的思想,其實很多的軟件,就是利用這種模式開發出來的。案例的學習和借鑒就屬于軟件重用的一種,具有非常大的借鑒意義。2.3實踐教學項目驅動教學。學生在軟件工程課程中,學生進行3-5人分組,小組選擇一個項目,項目具有一定的實踐鍛煉的效果,結合后期學生的畢業設計、實習、競賽、或主持或參與大學生項目等,學生選題不能具有隨意性[8-9]。教師在選題過程中要給予指導并提供建設性的意見,學生的選題要有長遠的規劃性,不僅僅是完成當前的課程實踐作業,后期的畢業設計、實習、競賽、主持或參與的大學生項目結合起來,這樣后期的工作量就相對輕松,可以節約大量的時間,學生在空余的時間內容,可以學習更多的內容。項目的選題長遠規劃非常重要,個別學生可能并未考慮這些,需要教師給予引導。項目實踐的內容,學生可以完成較為簡單的項目,課程結束后,學生可以在項目上進行擴充,實現更加復雜的功能。這樣學生可以運用更多的知識,繼續完善項目,更加接近實用性,開發完善的項目,最終可以提供給用戶使用。完成項目開發的學生在就業中更具有競爭性,能更快地適應崗位工作。學生選題之前,也可以對市場需求進行調研,了解社會需要的人才狀況,進而學習相關技術知識,提高自身競爭力。2.4網絡視頻案例教學。這種模式可以通過學校購買,網絡上可以選擇相關的案例學習。學生也可以自己尋找免費的網絡資源,也可以付費購買網絡資源。這樣可以快速地掌握相關的技術知識,節約了大量的時間。視頻案例學習,可以觀看培訓老師一步一步地軟件制作過程,具有軟件開發情景再現場景,跟隨老師的思路,一步步學習軟件開發,慢慢消化所學的知識,并且對知識的應用有一個模仿案例,通過長時間的積累,學生就可以自己領悟軟件開發的真諦,直至自己進行軟件開發。2.5培養學生軟件開發興趣。學生在學習軟件開發遇到困難,需要學習能夠解決,但是在學習的道路上,困難重重,能夠堅持下來,需要一定毅力,因此在學習的道路上,學生和老師互相加油,共同迎接困難。教師在教學過程中,多講述自己的經驗,以啟發學生。在學習的道路上,沒有捷徑可走,唯有知識的積累,才能有量變到質變。在學習的過程中,多思考,多借鑒,多搜索,多問同學和老師。困難遇到得多了,慢慢地就積累了經驗,水平才能提高。在水平提高后,學生的學習興趣就提高了,也會慢慢地帶動身邊的人去學習。2.6教師業務能力提升。教師需要不斷提高自己的軟件開發能力,要想學生有一碗水,老師就要有一桶水的水平。因此老師要在課下,不斷鉆研業務水平,提高自己的動手能力,在教學過程中,才能做到游刃有余,得心應手。老師的水平得到學生的認可,學生才能愿意跟著老師學習,聽老師的安排。教師利用慕課,假期培訓等方式,提高自己業務素質。學院要充分給予教師自由,提供培訓機會。教師在教研室活動中,要和同行教師交流,相互之間交流經驗,分享教學心得。相互分享自己的案例素材,以提高自己的教學水平。2.7重實踐考核方式。學生的考核方式,要想實踐能力傾斜。在平時的教學過程中,利用學生課下看視頻時間,作業完成情況,項目完成情況,個人項目匯報情況,期末成績等,綜合打分。表1給出考核的內容。
3實施過程
3.1案例篩選。理論課教學過程中,為了更容易明白理論知識,教師可在教學過程中,講述一些貼近學生生活的案例,促使學生更容易理解。在備課過程中,教師要整理案例材料,做到材料通俗易懂,服務理論教學。實踐課中,教師準備完整案例,包含文檔和程序,程序配有完整的安裝說明,以備學生運行程序。實踐教學的案例,要完整的內容。在實際教學過程中,能夠收集到較為完整的案例,并不容易,小型案例,可能比較簡單,文檔資料并不齊全,需要教師進行整理。另外,國內很多軟件開發公司,規模較小的企業,對文檔的撰寫重視不夠,往往程序的文檔材料,并不齊全。大型的軟件,有完整的文檔,內容比較復雜,并不適合案例教學。3.2教師重現程序編寫過程。教師在實踐教學過程中,需要用一個實際的案例進行教學,以提高學生的動手能力。而實踐課時不足的情況下,教師可以課下錄制好,再發給學生課下觀看,這無疑增加了教師的負擔,學院可以給予一定的補貼政策。教師在講述案例的過程中,要熟練教學,需要教師在課下多進行練習,達到熟練的地步。完整的案例教學,可以激發學生的學習興趣,也可以讓學生直觀地看到軟件制作的過程[11]。教學過程中,教師要有理論的知識講述,有實踐方面的操作,也有工具的使用。尤其在編碼過程中,遇到錯誤如何處理的,這需要教師有一定的代碼調試功底,在教學過程中,有的放矢。教師在案例的講述過程中,盡量錄制課程,以便后期給更多的學生觀看。通過多年的積累,教師手頭的課程資料就更多、豐富、案例的講述也更得心應手,畢竟是自己一手制作的。3.3教師提供教學資料。只通過任課教師的教學內容,畢竟知識面有限。在目前互聯網比較發達的時代,慕課、網絡公開課較為豐富的狀況下,教師可以在網絡上收集資料,通過網絡軟件把信息發送給學生[12]。學生只要愿意學習,就可以掌握編程方面的知識。網絡可以更快讓學生接觸到前沿技術,在畢業后能夠更好地勝任崗位,提高自身競爭力。3.4嚴控學生項目。光看不練,能力無法提高,在學生編寫軟件過程中,處于初級階段,會遇到各種各樣的錯誤。有些錯誤比較簡單,通過一定量的積累,就對一些小錯誤有直觀的認識。通過排錯經驗的積累,能力得到提升,慢慢就積累了興趣,學生建立了自信。在學生利用項目進行練習的過程中,教師要嚴控學生的制作過程,有些學生為了投機取巧,可能并沒有真實地參與到軟件開發中。對出現這些問題的學生,進行嚴肅處理,杜絕學生再犯。通過提問、項目匯報等途徑,教師可以得到一些端倪,以便核實和處理。另外,杜絕學生抄襲程序,可以用系統進行,以便發現抄襲問題。3.5項目長遠規劃。學生在軟件工程的實踐中完成項目。實施項目驅動教學,學生在選擇項目名稱的時候,與以往的項目名稱有所限制。項目的名稱應該貼近實際市場需要,對以后選擇畢業設計題目相吻合的題目,在軟件工程課程結束后,學生的項目的功能,還有待完善,因此項目可以作為后續繼續完善的項目。項目完善較好的,可以參加競賽,直接定位畢業論文設計的題目,如果能夠獲獎也是證明學生能力的一種體現,在就業也中有一定的優勢。如果學生在大學期間,主持或參與大學生創新項目,可以用創新項目的題目作為項目名稱,一方面可以完成大學項目所要求的系統,另一方面,也可以完成軟件工程實踐課程,同樣也可以作為畢業設計的題目。如果學生考研,這能節約不少的時間,在研究中復試中,可以處于有利地位。畢竟研究生階段要求學生具備一定的實踐能力,大多數導師都有項目,需要學生參與完成。
4結束語
本文通過對軟件工程課程教學中出現的實踐與理論脫節問題,通過對目前軟件工程的教學現狀進行分析,提出了一些改進措施。對提高實踐能力方面給出了具體實施措施。在案例的選擇、實踐操作、網絡資源的利用、實踐項目監督等方面,對實踐教學提出了實施的辦法,通過對阜陽師范大學軟件工程專業、計算機科學與技術專業、物聯網專業,進行了實施,學生的實踐能力得到提升,培養了能力較強的計算機軟件開發人才,很多學生考取研究生進一步深造。實踐結果表明了,提出的教學模式對軟件工程素質的培養具有重要的意義。
作者:劉華明 畢學慧 王秀友 李懷敏 晁妍 單位:阜陽師范大學
- 上一篇:自動氣象觀測站軟件設計研究
- 下一篇:快遞代取軟件開發研究