摘 要:軟件工程專業是大學本科計算機學科中一個重要專業分支,是現代信息化產業發展、網絡通信及相關軟件產業發展的直接產物。當前,隨著云計算、物聯網、電子商務以及“互聯網+”等相關產業的快速發展,國家和社會對高素質的軟件工程人才需求也越來越大,隨之而來的需求缺口和亟待程度也與日俱增。因此,認真研究軟件工程專業當前發展現狀、發展定位、課程模式以及相關弱點和不足,提出改進意見是有重要意義的。
關鍵詞:軟件工程專業; 專業培養模式; 多元化發展
中圖分類號:G642.0
文獻標識碼:A 文章編號:2095-5995(2017)11-0075-05
一、軟件工程專業簡介
軟件工程專業是國家教育部2002年批準的新增專業。該專業是隨著計算機應用領域不斷擴大、計算機網絡不斷發展的現實需求下逐漸形成的一個新的專業 [1, 2]。之所以命名為軟件工程,是因為復雜的軟件開發與復雜的工程一樣,需要運用傳統的工程原理和原則。隨著計算技術在解決復雜問題方面的廣泛應用,計算機科學已經成為一門基礎學科,軟件工程的學科范疇也逐漸拓展,發展成為與計算機科學并重的一門獨立學科。當前,軟件工程專業已經逐漸明確了自身的學科問題,形成了軟件工程領域基礎理論、工程方法與技術體系,構建起了軟件工程的課程體系,具備了自己的教育特色,并為現代軟件產業發展提供了理論、技術與人才支撐。
目前,除了偏重于職業技術培訓的職校以外,大多數高校的軟件工程專業辦學定位基本為教學研究型,在服務面上的定位是:立足服務信息社會的現代化發展,面向計算機信息和網絡行業,培養具有軟件開發結構化、系統化和工程化的高素質行業人才,既滿足社會經濟發展和信息網絡行業對人才培養的需求,同時與國家 “十三五”軟件行業的整體發展規劃相一致。具體來說,就是要緊緊圍繞信息社會和現代化網絡技術的發展,提高人才培養質量,不斷加強學生基礎知識和基本技能的培養,切實提高人才的實踐能力,充分發揮科學研究對專業建設的支撐作用,努力培養專業基礎扎實、實踐能力較強的高素質應用型、學術型、創業型人才。
二、軟件工程專業發展現狀
軟件工程的發展起點可追溯到20世紀80年代初。1980年代末到1990年代初,在單主機計算模式下,軟件開發居于主導地位的是瀑布式模型和結構式語言編程范式。在這一階段,軟件開發得到了快速和巨大發展。這一階段的特點是:編程軟件給規范和規程制定、工具研制、預算管理、工程核算、質量控制帶來極大方便,基于瀑布模型的軟件工程研究在軟件需求分析、軟件設計、軟件測試、軟件質量保證、軟件過程改進等多個子領域得到深化和擴展,形成了軟件工程學科的雛形。從學科發展和演進的角度來看,1970年代末期,美國制定研究生教育計劃時采納了IEEE-CS提出的制定軟件工程教程的建議,為軟件工程教育打下了基礎。1980年代末和1990年代初,軟件工程教育得到卡內基-梅隆大學軟件工程研究所(SEI)的培育和支持。他們調查軟件工程教育的現狀,出版軟件工程推薦教程,在卡內基-梅隆大學建立軟件工程碩士教育計劃,組織和推動軟件工程教育者研討會。1993年,IEEE-CS和ACM為把軟件工程建設成為一個專業,建立了IEEE-CS/ACM聯合指導委員會。隨后,該指導委員會被軟件工程協調委員會(SWECC)替代。SWECC給出了“軟件工程職業道德規范”、“本科軟件工程教育計劃評價標準”和“軟件工程知識體”(SWEBOK)。SWEBOK全面描述了軟件工程實踐所需的知識,為開發本科軟件工程教育計劃打下了基礎。2004年8月,全世界500多位來自大學、科研機構和企業界的專家、教授經過多年的努力,推出了軟件工程知識體、軟件工程教育知識體(SEEK)兩個文件的最終版本,標志著軟件工程學科在世界范圍正式確立,并在本科教育層次上迅速發展。軟件工程、計算機科學、計算機工程、信息系統、信息技術并列成為計算學科下的獨立學科。
當前,軟件產業是我國信息產業發展的核心,是國民經濟信息化的基礎 [1,2]。根據工信部2017 年1 月24 日發布的數據顯示,2016年中國軟件業實現產業收入4.9萬億,同比增長14.9%,遠高于同期的中國GDP的6.7%增長速度。作為“朝陽行業”,從目前的形勢來看,軟件工程專業在未來多年內仍將是就業形勢看好的專業 [3]。《2016年中國大學生就業報告》顯示,以計算機科學與技術和軟件工程等專業的就業率以及就業工資水平均居高校各專業榜首。這主要源自于物聯網、云計算、“互聯網+”以及人工智能等新興IT行業的快速發展和政府“十三五”發展規劃對經濟結構進行調整而產生的對軟件人才迫切需求。2015年,國家對軟件人才的需求超過600萬人,且該需求還以每年20%以上的速度逐年遞增。然而,目前我國每年最多能培養20多萬軟件人才,難以滿足社會需求,軟件人才需求缺口十分巨大,因此,加大力度培養軟件人才仍然是我國信息產業快速發展國家戰略的迫切需要。
軟件工程的人才培養具體到高校,截至2015年,經國家批準設立的獨立學院316所,經國家審定的分校辦學點共68個;目前,接近80% 的院校都開設有軟件及軟件相關專業,主要包括計算機科學與技術、軟件工程、自動化、通信工程、電子信息科學與技術、光信息科學與技術、集成電路設計與集成系統等多個專業,學歷、學位層次覆蓋博士、碩士、本科和專科。同時,為貫徹落實國務院《鼓勵軟件產業和集成電路產業發展若干政策》[1]和《振興軟件產業行動綱要》的精神,實現我國軟件產業人才培養跨越式發展,教育部以國家重點鼓勵發展的軟件、集成電路、信息安全等信息技術關鍵行業的戰略性和緊缺性人才培養為突破口,實施了一系列具有戰略意義的重大改革舉措。從2001 年起至今,國家先后批準成立37 所示范性軟件學院、35 所示范性軟件職業技術學院,建立了25 個集成電路人才培養基地,成立了40 個LINUX 技術培訓與推廣中心,各地方教育主管部門緊跟發展形式,也先后批準成立了50多所地方性示范軟件學院。
三、軟件工程專業現有發展模式對比與分析
綜合各校軟件工程專業的培養目標,大致的表述可以概括為:以軟件企業人才需求為導向,面向國民經濟信息化建設和網絡技術發展的需要,培養扎實掌握計算機基礎理論知識和較寬工程專業知識,具有較強的創新能力和工程實踐能力的高層次、應用型、復合型軟件工程技術人才。這些人才應該具有團隊協作能力和國際競爭力。為了進一步深入研究中國軟件工程專業的培養目標及其實現路徑,筆者分析了Software Engineering 2004和SWEBOK_Guide_2004的軟件工程學科教程,同時挑選出國內五所典型的高校軟件工程專業培養方案來進行比較。挑選這些高校時也考慮了它們所在的地理位置、經濟環境,以及各高校所屬的不同級別。這五所高校是:清華大學、北京航空航天大學、上海交通大學、四川大學和南京信息工程大學。其中前四所高校都由獨立的軟件學院來開設軟件工程專業,南京信息工程大學則由計算機與軟件學院開設軟件工程專業。五所高校開設的課程基本上都借鑒了西方國家本科課程開設的先進理念,同時在我國特有國情基礎上,發展出了自身特有的培養模式及相關課程體系。此外,它們在制定教學計劃也都充分考慮了軟件工程及其與相關學科的關系,在結合自身的人才培養目標和特色的基礎上,構建起了完整的課程體系和實踐體系。下面將從三個方面進行比較。
(一)專業內涵與辦學定位
軟件工程是一個交叉型工程學科,它是將數學、管理科學、計算機科學、工程科學等基本原理應用到軟件開發領域,借鑒傳統工程的某些原則與方法,實現系統、有效、可控的軟件生產工程。軟件工程協調委員會(Software Engineering Coordinating Committee,SWECC)發布的軟件工程知識體系(Software Engineering Body of Knowledge,SWEBOK)定義了軟件工程學科的內涵,并將軟件工程知識劃分成10個知識領域,即軟件需求、軟件設計、軟件構造、軟件測試、軟件維護、軟件配置管理、軟件工程管理、軟件工程過程、軟件工程工具和方法、軟件質量。這些領域形成了一個層次化的多級體系結構,明確了軟件工程學科的內容與邊界。SWEBOK還把軟件工程相關學科列為知識域,它們是軟件工程發展不可或缺的部分。相關學科知識域包括計算機工程、計算機科學、數學、管理學、項目管理、質量管理、系統工程學和軟件人類工程學八個領域。SWEBOK全面描述了軟件工程實踐所需的知識,為開發本科軟件工程教育計劃打下了基礎。從二十世紀六十年代末至今,軟件工程經過近五十年的發展,明確了自身的學科問題,形成了軟件工程領域基礎理論、工程方法與技術體系,完善了軟件工程教育課程體系,具備了自己的完整性和教育學特征,作為獨立學科方向為現代軟件產業發展提供了理論、技術與人才支撐 [4,5,6]。
(二)課程結構模式
雖然在培養目標和學科內涵上大體一致,但在培養目標的實現路徑上還是有些差異的。仔細分析這5所高校的本科培養方案和課程結構體系可以發現,這5所院校基本上體現了三種不同培養模式,因而可認為具有典型性[7]。
模式一:傳統計算機科學式設置模式
由于軟件工程專業是由計算機科學專業轉化發展而來,這種模式既體現了該專業的歷史發展特點,也同時體現了計算機科學和軟件工程這兩個專業之間的內在關系。這一模式的基本特點是,基于計算機科學專業的發展成果,將計算機科學專業與軟件工程專業進行結合,在計算機科學技術基礎上發展出軟件工程專業的特色和結構體系。這種模式的優點在于它可以很好地利用計算機科學專業的現有成果來建立和發展軟件工程專業,減少了新專業創立和形成時常會遇到的諸多不確定性,有效縮減了專業成熟周期。這一模式的核心課程設置常類似于IEEE2001SE推薦的計算機科學優先方法。四川大學的軟件工程專業課程設置就是典型的這一培養模式的具體體現。其專業核心課程的特點是:計算機科學和軟件工程相關課程各占專業核心專業課程的30%,反映出計算機科學與軟件工程專業這兩者之間的相互平衡并重的關系。
模式二:軟件開發式的設置模式
這一模式主要強化了學生對軟件開發的相關技術培養要求,適當刪除或減少了相關硬件方面和系統軟件構造等領域的知識和技能要求。與第一種模式相比,減少了計算機科學方面核心課程的數量,引入了部分新的軟件開發技能課程,具有更為明確的軟件開發技能指向性和更為靈活的適用性,有效提高了學生學習知識體系的應用有效性和目標針對性。北京航空航天大學的課程設置就屬于這一種模式。具體而言,北京航空航天大學的軟件工程專業培養方案不僅減少了電路分析、電子技術等硬件方面的必修課,還著重強調實踐教學,提倡并擁有一整套完整的實踐教學體系,每個學年不僅要求有三種類型的實踐教學,而且明確提出每位學生必須完成編程代碼數累計10000行以上。這一模式極為重視軟件開發的知識學習和技能培養,注重學生在相關應用領域的具體能力發展,能更好地適應社會對軟件產業的發展需求。
模式三:工程化的設置模式
該模式是當前培養模式的發展主流,其特點是根據軟件工程學科的基本要求,著眼于當前軟件產業在軟件開發領域工程化、系統化的設計與開發要求,強調開發過程的工程化管理理念,結合工程化方法,重新組織其基礎課程,進而將軟件開發技術基礎和軟件工程兩個知識體系完美融合成一體。該模式較大程度上簡化了原計算機科學專業的核心課程數量,而增加了軟件工程開發方面的多個核心課程。根據培養方案判斷,清華大學、上海交通大學和南京信息工程大學都采用了這一模式來設置專業課程。這三個高校的軟件工程專業培養方案中都明顯突出了軟件工程化、系統化開發的理念,將軟件基礎和軟件工程兩個基礎知識體系高效融合在一起,能培養同時具有扎實的軟件理論和軟件工程專業基礎知識的,并擁有良好的項目管理實踐能力的軟件工程人才。這一模式與IEEE2001 SE推薦的軟件工程優先方法相匹配,是該推薦體系的直接發展。當前,在國家重點發展工程應用型人才的指導方針下,這一模式已成為軟件工程專業發展的主流。
(三)課程結構模式差異分析
通過對五所高校開設課程的模式進行對比分析,不難發現這些高校在課程結構上有不少細微差異。如表1所示,可以看出,五所高校所設置的綜合教育課所占的平均比例為20%。但是,上海交通大學最為重視基礎知識的培養,因此其綜合教育課程比例最高,占到了其總課時的34%,南京信息工程大學軟件工程專業開設的綜合教育課程比例也占到了33%;而在專業基礎課程設置上,清華由于其生源質量較高的緣故,在設置比例上較低。南京信息工程大學在學科基礎課比例設置上保持在17%。相比之下,北京航空航天大學的則突出了專業基礎課的重要性,使之達到了30%;而在專業方向課程上,五所高校都給予了最大的重視,其所占的比重都較大,從31%直至最高的40%。其中,南京信息工程大學在專業方向課程上的設置比例最低,為29%。但總的來說,五所高校在該項比例上實際相差不大,低于9%的相異度;在實踐教學課程上,除了上海交通大學較低以外,各高校也都給予了相當程度的重視,清華大學、四川大學和北京航空航天大學的平均比例保持在20%。相比之下,南京信息工程大學軟件工程專業的課程設置由于其偏向工程化的特點,其實踐課程比例最高,達到了21%。
綜上所述,通過對比各所高校制定的軟件工程專業培養方案的差異可以發現,雖然這五所高校的培養目標大致相同,但由于它們所采取的培養模式存在差異,導致在具體的開設課程和課程結構比例方面也存在一定的差異,當然這必然會導致培養人才在知識結構上的差異。如何確定自身的發展方向,以及如何根據自身需求選擇合適的培養模式是當前軟件工程專業發展的核心和關鍵問題。
四、討論
對比上述三種模式,我們是否可以給出一個優劣的判斷?筆者認為不能。因為差異不等于優劣。在我國,目前的IT界和計算機涉及的各個領域,計算機人才和軟件開發人才都還是稀缺的,這兩種人才在知識結構上都應該互有交叉同時又各有側重。這三種模式培養出來的人才,在社會上都有需求,都有存在的價值。
然而,如果從討論軟件工程專業發展的角度來看,根據國家最新的軟件工程專業應用型和多元化發展戰略的要求,軟件工程專業的發展必然需要有自己獨特的套路。目前雖然有不少高校已經開展了新的學科建設或者專業課程調整[8],但不足之處還是明顯的:
(1)實踐教學比例不高。當前大多數軟件工程專業課程的實踐教學環節比例總體上還沒有達到國家教育部所規定的不少于總學分20%的要求,這一缺失會直接影響學生的實踐動手能力。
(2)不能適應社會發展對“多元型”人才的需求。現代經濟的發展,多學科交叉融合,用人單位對學生各方面能力要求都較高。但軟件工程專業并未站在時代發展前沿看待“軟件工程”專業的戰略性地位,也未系統地針對社會需求進行課程體系和實踐環節相結合的設計,因而,培養目標略顯保守,特別是當前人工智能發展迅猛,軟件工程也應培養復合型創新型人才。
(3)缺乏高水平師資力量。除了少數“雙一流大學”和擁有“雙一流學科”的高校,這一缺陷仍廣泛存在于大多數高校中。主要體現在:現有教師隊伍在國-教師的學術成果顯得比較薄弱,而軟件工程作為新發展起來的應用型專業,這種狀況尤甚。
(4)國內外專業合作尚處于初級階段。雖然已有相當部分高校開展了各種形式的學科交流工作,但在專業建設方面尚需加強與國內外頂尖大學的深層次合作,進一步深化合作的形式和內容,并使之多樣化與常態化。同時,在合作手段、培養對象等方面還需要大膽創新,多元化深層次地開展國際合作交流、校企合作交流。
針對上述不足,筆者認為可以從以下幾方面進行改進:
(1)制定軟件工程專業的培養模式規范。將各種培養模式的內容和特點進一步細化,總結出各種模式的優缺點,并進行有效分類組合。同時針對當前軟件產業發展形勢,選擇最優培養模式組合,以便進行多元化發展,從而盡可能更多更好地滿足不同行業、領域對軟件人才的需求。
(2)進一步鞏固和加強工程理念在軟件工程專業培養中的地位。工程理念是軟件工程專業的特色和優勢所在,更是軟件產業得以持續高速發展的根本保障。在保持軟件工程專業和計算機科學專業的緊密聯系的同時,對軟件工程特有的工程理念進行強化或深度結合,能夠進一步提升軟件工程專業持久的生命力和活力。
(3)全方位加強實踐教學在軟件工程專業培養中的地位和重要性。軟件工程專業的發展趨勢是工程化和應用化。對實踐教學進行大力改革,能從各個方面加強學生實踐動手能力。具體來說,在基本知識和專業技能上加強實踐教學,可以更快更好地培養多領域的應用型軟件人才;而在工程理念和社會創新意識培養上新添或增加實踐教學,則可以在更高的專業層面培養出具有更高水平的軟件工程專業高級人才。
(4)在具體的培養方式上,要充分利用國家、企業或者私人所能提供的各種資源,創造更為有利的人才培養環境。具體來說,就是要大力提倡產學研相結合,有效提高學生的學習興趣和學習能力,針對具體的應用需求進行專業化培養,同時進一步提高人才培養效率和培養質量。
參考文獻:
[1]國務院. 鼓勵軟件產業和集成電路產業發展的若干政策[Z]. 國發[2000]18號.
[2]邱欽倫. 中國軟件人才供需現狀[J]. 計算機教育, 2012(11): 68-71.
[3]梁曉音. 2012年中國移動互聯網應用趨勢預測[J]. 硅谷, 2012(16): 11-14.
[4]王新海,王永貴,張海濤. 軟件工程專業工程化實踐教學研究與實踐. 遼寧工程技術大學學報(社會科學版), 2010, 12(6): 657-659.
[5]熊偉,洪玫. 大學本科軟件工程專業建設的探究與實踐. 理工高教研究, 2010, 29(1): 59-61.
[6]何火嬌, 王映龍. 地方性院校軟件工程專業人才培養方案設計研究[J]. 計算機工程與科學, 2011, 33(1): 100-103.
[7]金彩琴,汪萬紫,裘國永,蒙根胡依格. 若干高校軟件工程專業培養方案比較[J]. 中國科教創新導刊 , 2011(11) :149-150.
[8]鄭山紅, 李萬龍, 趙輝等. 基于校企合作的軟件工程課程群體系構建與實踐[J]. 計算機教育, 2012(7): 32-35.
Abstract:Software engineering is an important professional bachelor degree in computer science, and its the direct product of the development of the modern information industry, the network communication and the relevant software industry. At present, with the rapid development of the cloud computing, Internet, E-commerce, and “Internet Plus” industries, the national and social demand for high-quality software engineering talents keeps growing. As a follow, the demand gap and its urgent degree are also increasing day by day. Therefore, it is of great significance to study the current development status, development orientation, curriculum model and related weaknesses of software engineering specialty, and put forward improvement advice.
Keywords:Software engineering major; Professional training model; Diversified development