當前位置:學問君>學習教育>畢業論文>

面向工程應用的軟件工程課程教學改革的分析與研究論文

學問君 人氣:1.89W

1引言

面向工程應用的軟件工程課程教學改革的分析與研究論文

軟件工程是一門研究用工程化方法開發、維護和管理軟件的科學。IEEE-CS/ACM在計算機學科教程體系中、中國教育部高等學校計算機科學與技術教學指導委員會在《高等學校計算機科學與技術專業公共核心知識體系與課程》中,都將軟件工程列爲計算機學科的核心專業課,因此軟件工程在計算機學科中佔有}-分重要的地位,是培養學生軟件工程能力的一門關鍵課程。

然而,由於軟件工程本身就是一個比較複雜的系統工程,軟件工程課程兼具理論性與實踐性,目前不少高校對該課程的教學效果並不理想。爲此,教育部高等學校計算機科學與技術教學指導委員會專門成立課題組,研究形成了《軟件工程課程教學實施方案》。對教學內容、教學模式和實踐體系等提出了明確的要求。國內外衆多高校也積極開展軟件工程的課程改革,從指導思想、教學目標、課程內容、教學方式、實踐環節等方而進行進一步探索和創新,取得了一系列富有成效的改革成果。

西安建築科技大學計算機專業自從1986設立以來就一直將軟件工程作爲專業主幹課,20多年來,許多教師在長期的教學實踐中對該課程的教學進行了不斷的探索。目前,國家和西安的軟件產業發展迅猛,對軟件開發和外包服務人才的需求很大,而我校已經新申請到軟件工程一級碩士點和本科專業,正在建設計算機應用型人才培養模式創新實驗區,在此背景下我校對軟件工程課程進行了進一步的深化改革,形成了一套面向工程應用、特色鮮明、行之有效的改革方案。

2軟件工程課程存在的問題

<1)從課程內容上看,軟件工程課程系統性、綜合性、交叉性強,內容多、更新快。軟件工程到目前爲比已經由一門課程發展成一個新興的學科體系,包括軟件工程本科專業和研究生一級學科。軟件工程的發展導致其課程內容非常龐雜,幾乎涉及了軟件工程學科的主要內容,從某種意義上軟件工程課程是軟件工程學科內容的“大綱”。根據IEEE-CS與ACM於2014年發佈的軟件工程知識體系,軟件工程課程共15個知識域,涉及7門學科,系統性、交叉性、綜合性非常明顯。因此,學生由於經驗缺乏和知識背景的限制,要在短時間內全面掌握軟件工程課程的內容客觀上難度較大。

<2)從課程性質看,軟件工程是一門兼具理論性與實踐性的工程技術課程。軟件工程誕生於人們對“軟件危機”的解決,是人們對軟件開發、管理、維護經驗的總結,包括一系列的思想、概念、方法、技術和規範,具有完整的邏輯理論體系。然而軟件工程的課程內容來源於實踐、高於實踐、應用於實踐,具有很強的工程應用特徵。因此,由於大部分學生普遍缺乏軟件開發的經歷,對軟件項目管理與維護不熟悉,如果教學方式不合理,容易造成理論與實踐脫節。

<3)從教學內容上看,教學案例和項目設定往往不合理。教學案例和項目或者比較陳舊,脫離實際,學生不感興趣;或者項目規模較小,軟件工程的重要性體現不出來;或者龐雜、零碎、不繫統,軟件分析、設計、構造、測試等不同的階段選取的案例與項目不同,導致學生對軟件過程各個階段的銜接和平滑過渡與映射不能較好的掌握,實踐中無法完成完整的軟件開發。

<4)從教學方法上講,高校的教師非師範院校畢業較多,許多教師對教育學、心理學、教學論、課程論等不熟悉,在教學方法上採用的是“自發的”以教師爲中心的講解教學模式,“滿堂灌”、“照本宣科”、“照屏宣科”是其基本特徵,導致學生感覺枯燥乏味,學習興趣不高,積極性下降,教學效果差。

<5)從實踐教學上講,或者實驗課時太少,學生缺乏充分的軟件開發實踐訓練;或者實驗內容不合理,以掌握工具、編寫軟件文檔爲主;或者實踐教學體系不完整,沒有課程設計,甚至有的學校認爲軟件工程只是一門純理論課,沒有必要設定實踐環節。凡此種種導致學生只記住了一些理論知識,無法形成實際的軟件開發能力,更談不上專業素質的培養。

3改革措施

爲了進一步提高軟件工程課程的教學質量,解決存在的問題,根據國家和社會對計算機專業人才市場需求,在IEEE-CS/ACM和教育部高等學校計算機科學與技術教學指導委員會關於該課程有關檔案的指導下,配合西安建築科技大學實施的計算機學科的質量工程,應用前沿的教育教學理論,我們對該課程的教學進行了深入改革和積極探索。

3.1課程的教學定位和培養目標

1998年美國學者霍恩斯坦在批判繼承布盧姆教育目標分類學的基礎上推出了一個全新的教育目標分類體系,它將全部教育目標劃分爲認知領域、情感領域、動作技能領域和行爲領域4個部分,每個領域包含5個層次的教育目標多元智能理論是美國哈佛大學心理學教授霍華德·加德納於1983年在質疑傳統智能理論的基礎上提出來的,他認爲人的智能由言語語言、數理邏輯、音樂節奏、視覺空間、身體運動、人際交往、自我認識、自然探索八個方面組成,教育者應該培養和發展學生的多元智能。

霍恩斯坦的教育目標分類理論、霍華德·加德納的多元智能理論對課程定位和目標的確立具有重要的指導作用。包括我們學校,目前不少高校或者把軟件工程定位爲一門純粹的理論課程,課程與實際工程應用結合不緊密,學生對這門課感到枯燥、不感興趣,體會不到軟件工程的實用價值;或者基於傳統理論制定的教育目標籠統、單一,缺乏層次性,教學實施和評價困難,培養的學生難以滿足社會需要。

以國家和社會對計算機學科人才的需求爲導向,根據IEEE-CS八CM、教育部高等學校計算機科學與技術教學指導委員會和國家高等教育“質量工程”的要求,應用霍恩斯坦的教育目標分類理論、霍華德·加德納的多元智能理論,我們對“軟件工程”課程的定位和目標進行了研究,將軟件工程課程定位爲理論與實踐並重的“工程型”專業主幹課,既涉及計算機學科的理論、抽象、設計三個形態,又關注於工程學科的系統性、規範性和可度量性等基本屬性,突出教學實踐環節和軟件形態開發能力的培養,使學生透過實踐工程的建設獲得基礎技能、團隊合作、分析與解決問題以及創新能力的發展。

3.2課程教學內容的實施

IEEE-CS與ACM於2014年發佈的軟件工程知識體系,確定的軟件工程課程知識域共15個,包括軟件需求、軟件設計、軟件構造、軟件測試、軟件維護、軟件配置管理、軟件工程管理、軟件工程過程、軟件工程建模與方法、軟件質量、軟件工程專業實踐、軟件工程經濟學、計算機基礎、數學基礎、工程基礎。以這15個知識域爲參考,基於工程型人才的培養定位,根據教育部高等學校計算機科學與技術教學指導委員會制定的《軟件工程課程教學實施方案》l31在教學內容方面的建議,確定瞭如下的教學內容與重點:

<1)軟件工程概述廠注重引導學生認真分析案例中體現出的工程性問題,闡述軟件工程領域中的業界最佳實踐和最新技術發展動向。

<2)需求分析。教學中重點講解需求獲取和需求管理的主要活動,引導學生運用所學的方法和技術,定義各種系統的軟件需求,形成需求規格說明並進行需求評審。

<3)分析建模。教學中介紹結構化分析技術,重點講解基於面向對象分析方法,並側重於對實際的軟件系統進行建模分析。

<4)軟件設計。教學中強調各種不同的設計方案,引導學生透過比較和分析這些方案的優劣,權衡和選擇合適的設計方案,並且在應用設計原則進行詳細設計時,儘量使用重用技術,掌握常用的設計模式。

<5)用戶介面設計。教學中介紹常見的用戶介面風格,講解如何運用用戶介面設計工具完成具體的介面設計。

<6)軟件實現。在學習軟件工程之前,學生已經具備一定的程序設計基礎,但可能缺少軟件工程的概念和訓練。透過分析程序代碼實例,從可讀性、規範性、正確性、容錯性、可重用性等方面講解良好的編碼實踐,強調代碼走查和單元測試技術是軟件編碼的一部分,在課程實驗項目中訓練學生應用測試驅動的軟件開發技術,掌握編寫高質量代碼的基本能力。

<7)軟件測試。教學中全面介紹質量保證體系和常見的軟件測試工具,引導學生設計簡單的測試用例,並能夠運用工具完成簡單的測試要求,也可以編寫一些小規模的測試工具。

<8)軟件交付與維護。這部分內容以講授基礎知識爲主,同時透過課程實驗項目,使學生體會軟件發佈與部署工作。

<9)軟件過程。教學中結合具體的工程性項目,引導學生選擇和改進適用的過程模型,並能夠定義整個開發過程。

< 10)軟件工程管理。教學中重點介紹大型軟件企業的層次式組織結構及其常見的角色職責與分工,講解如何制訂小組層次上的項目進度計劃,培養較強的口頭交流與協商能力。

3.3基於建構主義理論的教學模式的革新

目前的軟件工程教學採用的是“以教師爲中心,教師講、學生聽”的基於行爲主義理論的傳統教學模式,該模式將學習看成是一種消極的知識傳遞過程,在這種教學模式下,作爲認知主體的學生在教學過程中自始至終處於被動狀態,難以發揮其主動性、積極性。這樣的教學,既不能保證教學的質量與效率,又不利於培養學生的發散性思維、批判性思維和創造性思維,也不利於創造型人才的成長。

近二十年來,把學生作爲知識灌輸對象的行爲主義教學理論已經讓位於把學生看作是資訊加工主體的建構主義教學理論,該理論下的教學模式主要有支架式、拋錨式和隨機進入式廳。拋錨式教學也稱“基於問題的教學”,實際情境中的真實事件或真實問題的確定稱爲“拋錨”。支架式教學圍繞所學習的主題,按照“最鄰近發展區”的要求,建立概念框架,然後引導學生進入一定的問題情景,讓學生獨立探索,並透過小組協商,最終完成對所學知識的意義建構。隨機進入式則隨意透過不同途徑、不同方式進入同樣教學內容的學習,從而使學生獲得對同一事物或同一問題的多方面的認識與理解。實踐證明建構主義的教學模式不但能有效地提高學生思維的發散性、批判性和創新性,而且能提高學生的自主性和合作精神,強化學生的素質教育。

基於構建主義的教學理論,根據軟件工程課程的特點,我們對傳統的教學模式進行改革,創立了以建構主義拋錨式教學方式爲主、以支架式和隨機進入式爲輔的新教學模式,將教學過程分解爲創設情境、確定問題、自主學習、協作學習、效果評價五個環節,對每個環節進行精心設計,並按照教學內容、教學環節的不同選擇具體的教學方式。其中拋錨式教學就是情境教學或項目驅動教學,關鍵是“拋錨”,以來自教師實際橫向課題的軟件開發工程項目爲驅動貫穿於軟件項目投標與合同確定、需求分析、軟件設計、軟件構造、軟件測試與維護,以及項目的管理等各個階段和方面的教學。支架式教學方式主要用於軟件工程基本概念、基本理論、基本方法等理論性知識的學習,重點是“支架”的建立;而隨機進入式則透過遞進式、多層次的學習來突破難點,時機的選擇很重要。新的教學模式受到學生的極大歡迎,顯著提高了教學質量。

3.4大實踐體系的構建

IEEE-CS八CM和教育部高等學校計算機科學與技術教學指導委員會都特別指出要高度重視專業教育的實踐環節,而對於軟件工程課程來講,強化實踐環節更是提高學生軟件開發能力、增強項目管理意識和團隊合作精神的突破口。基於我校實驗課課時只有8學時,且沒有課程設計安排的特殊現實,改革中我們構建了課程協同、項目驅動、內引外聯、多次迭代的大實踐體系。

<1)先修課程鋪墊。我校的數據結構、數據庫、面向對象的程序設計等課程是軟件工程課程的先修課程,他們的課程設計環節通常要完成一個小軟件的`開發。儘管此時學生還沒有學習軟件工程課程,但是我們也要求在課程設計的指導中教師要按照軟件工程的原理簡要介紹開發的過程、重點和文檔的規範,讓學生儘量按照軟件工程的要求去開發軟件完成課程設計,這樣就爲後面軟件工程課程的學習積累了一定的開發經驗。

<2)課內實驗二次開發。在先修課程的課程設計中由於學生還沒有開始學習軟件工程課程,很多學生在小軟件的開發中會出現類似歷史上的“軟件危機”現象:缺乏分析和設計,只注重編程與實現,也不重視文檔的編寫,採用開發完補文檔的方式,從而造成軟件功能差、漏洞多、不穩定、常反覆、難維護的不良後果。對此,我們將軟件工程實驗課的內容由原來的以文檔編寫爲主改革爲以開發軟件爲主,而項目的來源則是學生以前在其他課程的課程設計中完成的小軟件項目。在實驗中,首先由學生選擇開發過的小軟件項目,對該項目存在的問題,不符合軟件工程原理的地方進行分析,讓學生親身體會軟件工程課程的重要性。然後重新分析定義軟件的規格,形成新的、擴大了的開發任務,最後按照軟件工程的要求完成原來小軟件的二次開發。這樣學生在8學時的實驗中就完整地進行了一個軟件的開發,項目雖小,但是“麻雀雖小,五臟俱全”,學生從分析、設計到實現,軟件開發的各個階段都進行了訓練。由於前後對比鮮明,學生體會深刻,收穫很大。

<3)生產實習全封閉式實戰訓練。實驗課程中對其他課程設計項目的二次開發,儘管讓學生按照軟件工程的要求進行了一次完整的軟件開發訓練,但是項目基本都是虛擬的,項目的規模也較小,同時每個小軟件都是學生單獨開發,學生得到的訓練效果有限。對此我們對生產實習的課程進行了變革,透過和全國著名的專業軟件培訓機構—行知匯元軟件培訓中心進行合作,在暑假對畢業班學生進行爲期一個月的全封閉式軟件開發實戰訓練。實戰項目和訓練方案由公司與學校共同制定,教學實施以公司的講師爲主,學校的帶隊教師進行監督,組織與管理由雙方共同進行,與真實軟件公司的方式基本相同。學生以4-5人爲一小組,一組一個項目,以各個學生的特長爲基礎進行優化組合和任務分工,開發時同一小組的成員一人一臺電腦圍繞着圓形工作臺協作進行。爲了保證質量,考覈由平時成績、階段評估與最終答辯組成。平時成績以考勤爲主,輔以老師的巡視、提問等隨機性因素。按照軟件工程的過程和週期,每一個階段完成後都要進行評估,以便及時發現問題,只有評估透過才能進入下一個階段的開發。最後進行公開答辯,公司和學校的教師共同組成答辯小組,除了教師提問外其他學生也可以進行提問,答辯結束後除了給出每人的答辯成績外,還要評出最佳軟件獎、最佳團隊合作獎。由於“真刀真槍”,實習結束後,學生普遍感覺收穫很大,不僅軟件開發能力得到顯著提高,而且團隊合作精神、職業素養受到良好的培養。

3.5評價和考覈方式的變革

目前“軟件工程”的評價和考覈採用平時成績+筆試的方式,平時成績佔30%,筆試佔70%,該方式偏重於理論,無法考查學生的實際項目開發能力。改革後的考覈由實驗成績、平時成績和期末筆試3部分組成,平時成績佔10%,期末考試成績佔50%,實驗成績佔40%。平時成績包括作業、課堂討論、教師提問和考勤等環節,期末考試採用開卷形式,重點考查學生對軟件工程的基本概念、基本理論、基本方法的理解和掌握程度。實驗課程的考覈包括成果展示、文檔撰寫、平時巡查等環節。

4總結

經過3年的教學實踐,本文提出的改革措施逐步得到實施,原先存在的問題不斷得到解決,改革的效果不斷地體現出來,學生對軟件工程課程的興趣明顯提高,學生的實際開發能力、團隊合作精神、職業素養都得到了有效培養,學生就業於軟件開發企業的比例也有了增加,並且受到企業的好評。當然,軟件工程課程的改革只有進行時,沒有完成時,今後在提高課堂教學的質量、完善實踐教學體系等方面,我們還要做進一步的努力。