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

才智咖 人氣:1.87W

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