摘要:通過深入分析國家及行業對軟件工程人才的規格需求以及地方工科院校的特點,總結多年教學實踐和教學研究成果,提出“三維立體交叉滲透”軟件工程課程建設方案。在實際教學中提出“案例教學、項目驅動、團隊合作”的教學法,結合教學實踐,提高教學效果。實踐證明,軟件工程課程建設提高了教學水平,為人才培養、學科建設和學校視野發展作出了貢獻。
關鍵詞:三個維度;軟件工程;立體交叉滲透
高校是承擔軟件人才培養的主要場所。但長期以來,一個不爭的事實是IT企業常常對剛走上工作崗位的畢業生不滿意,他們認為學生在學校中學習的知識與公司中的實際應用相脫節,學生不能馬上勝任工作,而高校也意識到這一現象,采取措施進行教學改革。
目前,地方工科院校軟件工程專業教育普遍存在“基礎知識不實、專業素質不高、工程能力不強”等問題,筆者提出了“以軟件工程課程建設為核心進行教學改革,全面提高教學質量”,以“夯實理論基礎、注重專業素質、強化工程應用”為目標,按照“五個一流”的要求,通過軟件工程課程建設來開展系統化的研究工作,構建軟件工程課程群體系結構,大力加強課程建設,優化課程體系、創新教學方法、改進教學手段,為軟件工程人才培養、專業建設和學科建設發揮重要作用,為其他學科的課程群建設提供參考。
1構建“三個維度立體交叉滲透”的軟件工程課程
“三個維度立體交叉滲透”的課程體系設計改變了傳統的平面式課程體系設計思路,使課程體系具有更加明顯的層次性、模塊性和連續性,更能體現課程體系的實用性、多樣性和靈活性,旨在培養學生的工程設計能力,圍繞社會和企業的需求,為學生鋪墊更寬廣的職業道路。
以SEBOK(軟件工程知識體,SEI)為基礎,以教育部《本科軟件工程專業指南》為依據,我們構建了“立體交叉滲透”的軟件工程課程體系。
1.1三個維度立體交叉合理滲透
通過深入分析,我們將課程體系劃分為三個維度:模塊維、層次維和過程維,如圖1所示。在模塊維中,我們根據內容,將課程劃分為理論、基礎、實踐、技術、過程、方法和工具等知識模塊;在層次維中將課程內容分為三個層次,即理論層、平臺層和應用層;在過程維中,根據軟件工程過程,即需求獲取、系統分析、系統設計、系統構造、系統測試和系統維護進行知識的組織,使課程體系實現了結構化、模塊化,便于更新和重組,增強了課程體系的實用性、靈活性、合理性和多樣性。
1.2核心的課程體系設置
基于“三個維度立體交叉滲透”的軟件工程課程群的三門核心課程是:編譯原理、操作系統和軟件工程。對學生五個方面的素質進行培養,包括扎實的數學理論、準確的英語表達、先進的軟件技術、優秀的職業素質和卓越的軟件工程能力。三個維度的核心課程層次如下:在理論層中,以編譯原理課程(CP)為核心;在平臺層中,以操作系統課程(OS)為核心;在應用層中,以軟件工程課程(SE)為核心突出核心課程,并以這三門課程向外拓展突出五個方面的重要課程內容,即數學、英語、軟件技術、職業素質和軟件工程,同時以數學為理論基礎、英語為表達基礎、編譯為核心理論、操作系統為應用平臺、軟件工程為核心技術,使課程體系具有主次分明、重點突出的特點,如圖2所示。
1.3軟件工程學科定位
如圖3所示,我們從軟件工程專業的學科特點出發,針對每一門課程,圍繞一根軸線十個節點,即問題、算法、模塊、架構、軟件、系統、產品、項目、工程和科學組織教學內容,體現了始于問題、由小到大、不斷構造、回歸理論的軟件工程學科特點。
軟件工程是工程性很強的專業,其本質是軟件產品的構造,其目標是質量和效率。為了體現這一特點,我們總結了課程體系中要抓住八個關鍵,即項目、流程、技術、工具、規范、標準、團隊和產品,如圖4所示,充分體現軟件工程專業的工程性特征,注重軟件工程實踐的教學。
2構建“三個維度立體交叉滲透”的多元化教學法
在今天的軟件行業中,軟件開發通常是一個團隊成員合作完成的,軟件工程師不僅要掌握軟件設計與開發的專業技能,還要解決面臨的非技術性問題。為使學生能應對今后工作中出現的各種問題,培養學生運用所學知識靈活處理問題的能力,軟件工程專業的教師要不斷探索課堂實踐教學法。
通過教學實踐和教學研究,我們將國內外流行的軟件工程專業教學方法歸納為面向實踐教學法和模擬教學法。面向實踐教學法[1]包括案例教學、項目驅動和團隊合作等,模擬教學法是使學生能在一個較大規模層次上以快捷方式在學術環境里參與實踐的軟件工程實踐。在教學實踐中,只有將不同的教學方法合理運用并有機結合,才能有效提高教學質量。
2.1面向實踐教學法
在軟件工程課程的教學中,教師應該使用多種教學方法,拉近實踐教學內容與現實軟件開發過程的距離,培養學生的軟件工程實踐能力,我們結合多年的教學經驗,為軟件工程課程體系教學質量的提高提供有益的參考。
2.1.1案例教學法
案例教學有利于學生掌握理論知識,并運用知識解決工程中的實際問題。我們以學生的優秀課程設計、教師開發和引進的項目為主,積累并建立了教學案例庫,建設了適用于課堂教學的PPT課件庫和適合于網絡教學的網絡資源庫。體現了“以生為本、自主發展、師生互動、教學相長”的教學特點,有力促進了教學,提高了教學效率和教學質量。
2.1.2項目驅動教學法
項目驅動教學法是指在教師的指導下,學生以一個人或小組的方式,完成需求獲取、需求分析、定義軟件架構、項目實施以及最終評價。學生可以學到課堂教學學不到的知識和技能,在進行需求獲取時,又能鍛煉學生的人際交往能力。該教學法的最顯著特點是“以項目為主線、學生為主體、教師為輔”,改變了學生的被動參與方式,將再現探究式學習,有利于激發學生開發項目的興趣,通過對項目進行開發、測試和維護,達到獲得軟件工程知識和技能的目的。
在教學實踐中,項目主要來源于教師的在研項目。當學生遇到問題時,教師進行指導。項目的另一來源是教師(工程師)充分考慮學生的實際情況和當前的學習狀態,為他們量身定制的虛擬項目。
2.1.3團隊合作教學法
軟件開發通常是一個團隊成員合作完成,據此,有學者提出基于團隊合作的教學方法[2]。
在教學實踐中,我們每個學期挑選一個較大型的項目,模擬實際工作中的角色,給學生們分工,要求學生按照要求完成指定的項目,每個項目組最后演示他們的成果,其他小組作為裁判給出評價。在實際操作中,還可以讓學生完成教師的科研項目,讓學生在實際工作中體會團隊合作的意義。教師可以讓學生以團隊合作的方式積極參加每年一次的“大學生挑戰杯程序設計大賽”,鍛煉學生的工程化能力和團隊合作能力。
2.2模擬教學法
國外的學者提出采用模擬教學法[3],是使學生能在一個較大規模的層次上,以一種更快捷的方式在學術環境里參與現實軟件工程實踐,在深度和廣度上理解軟件工程的復雜性和內在本質。該教學法值得進一步深入研究,國外在軟件工程教學中購買業內使用的或專業的模擬器,如文獻[3]中給出了一個用于軟件項目管理訓練的模擬器。
在軟件工程實踐中,模擬器[4]是根據實際軟件開發積累的經驗數據建立起來的,可以對軟件成本計算、數據收集、需求分析、風險分析、項目管理、軟件過程改進等方面進行模擬,減少實際操作中的錯誤,是對軟件工程各階段進行分析與評判的手段。學生在校園里,如果想體驗公司中的軟件工程實踐,該教學法是很好的補充。在今后的教學中,我們將努力深入研究。
3構建軟件工程課程的開放網絡教學平臺
我校軟件工程課程群中的三門核心課程,即軟件工程、操作系統和編譯原理,均被評為吉林省省級精品課,在人才培養、專業建設和學科建設方面發揮了重要作用。
我校課程組成員還開發了網絡化教學與學習平臺,依托長春工業大學校園網,堅持“完整性、共享性、先進性和實用性”的原則,以軟件工程教學團隊開放網絡系統為平臺,構建了軟件工程精品課網站、操作系統精品課網站和編譯原理精品課網站,為學生提供課后指導和在線學習的平臺。
4結語
在軟件工程專業的教學探索中,我們首先認清教學目標,從優化課程體系、創新教學方法、開發網絡教學平臺等多環節入手,結合軟件工程專業的工程特征,深入分析國家及行業對軟件工程人才的需求及地方工科院校的特點,提出了“三個維度立體交叉滲透”的軟件工程課程建設,在教學實踐中已取得了不錯的效果,在一定程度上促進了軟件工程專業人才培養、專業建設和學科建設方面水平的提高。軟件工程課程建設是一個不斷發展和完善的過程,我們要不斷地探索新方法、新技術,進一步完善課程體系,提高學生的軟件工程能力,培養優秀的軟件工程師。
參考文獻:
[1] GNATZ M. A Practical Approach of Teaching Software Engineering[C]//Proceedings of the Sixteenth Conference on Software Engineering Education and Training.Nevada:IEEE Computer Society Pr