- 相關(guān)推薦
面向軟件系統設計的軟件工程專(zhuān)業(yè)關(guān)鍵課程建設論文
高端軟件設計人才不僅要有過(guò)硬的設計技能,還要有牢固的工程觀(guān)、系統觀(guān)和產(chǎn)品觀(guān)。本文基于南京大學(xué)軟件開(kāi)發(fā)學(xué)院的教學(xué)實(shí)踐,以軟件系統的設計與構造為主線(xiàn),提出了圍繞軟件設計設置和實(shí)施的軟件工程專(zhuān)業(yè)關(guān)鍵課程方案。該方案強調在專(zhuān)業(yè)入門(mén)課程就開(kāi)始培養學(xué)生的軟件工程觀(guān)念和系統觀(guān)念,并一以貫之地教授學(xué)生在軟件工程思想的指導下進(jìn)行軟件設計的能力。
一、概述
作為國家戰略性新興產(chǎn)業(yè),軟件業(yè)急需一批領(lǐng)軍型軟件人才。教育部在2002年批準開(kāi)辦軟件工程(以下簡(jiǎn)稱(chēng)SE)專(zhuān)業(yè)并設立國家示范性軟件學(xué)院,2011年批準設立軟件工程一級學(xué)科并把軟件工程師培養列入了卓越工程師教育培養計劃。至2013年,我國有425所高校開(kāi)設軟件工程專(zhuān)業(yè),設點(diǎn)數、招生數及就業(yè)質(zhì)量均進(jìn)入前十。因此,研究與建設軟件工程專(zhuān)業(yè)關(guān)鍵課程體系對于軟件人才培養具有重要的現實(shí)意義和積極的推動(dòng)作用。
國際上,IEEE和ACM共同制定了軟件工程學(xué)科教程CCSE[1,2],給出了軟件工程專(zhuān)業(yè)的教育知識體系,提出了組織和設計課程體系的若干建議,是公認的軟件人才培養工作基礎。CCSE推薦課程包括SE基礎課程5門(mén)、CS中級課程3門(mén)和SE高級課程6門(mén),并提出了SE優(yōu)先的課程方案和CS過(guò)渡的課程方案。
但是,SE專(zhuān)業(yè)在教學(xué)實(shí)施中面臨以下難題[3]:(1)傳統計算機科學(xué)(以下簡(jiǎn)稱(chēng)CS)專(zhuān)業(yè)的軟件工程課程如何合理過(guò)渡到SE基礎課程和6門(mén)SE高級課程;(2)如何落實(shí)SE優(yōu)先的教學(xué)理念,解決關(guān)鍵課程的教學(xué)實(shí)踐與教學(xué)資源;(3)如何實(shí)施軟件工程課程與程序設計類(lèi)課程的融合教學(xué)。
具體來(lái)說(shuō),目前國際國內缺乏對SE關(guān)鍵課程的教學(xué)實(shí)踐,SE優(yōu)先的基礎課程與部分高級課程屬于全新構造,難覓教材和成熟的教學(xué)資源,從而導致SE專(zhuān)業(yè)教學(xué)在實(shí)施時(shí)面臨很大困難,大多數學(xué)校只能因循計算機科學(xué)專(zhuān)業(yè)傳統課程過(guò)渡。因此,貫徹SE優(yōu)先的教育理念與落實(shí)系統化的SE專(zhuān)業(yè)教學(xué)體系成為擺在廣大SE教育者面前的一個(gè)巨大挑戰。針對這些問(wèn)題,南京大學(xué)軟件工程專(zhuān)業(yè)經(jīng)過(guò)多年教學(xué)實(shí)踐,以軟件開(kāi)發(fā)的核心工作——軟件系統設計與構造為主線(xiàn),提出了面向軟件系統設計與構造的SE專(zhuān)業(yè)關(guān)鍵課程教學(xué)實(shí)施方案。
二、設置思路
CS傳統課程按照知識領(lǐng)域安排,非常適合于培養研究性人才。軟件產(chǎn)業(yè)則迫切需要能夠綜合運用各種工程技術(shù)知識解決具體問(wèn)題的實(shí)用性人才。為此,南京大學(xué)SE專(zhuān)業(yè)教學(xué)體系從能力培養入手,強調持續培養學(xué)生的工程觀(guān)、系統觀(guān)和產(chǎn)品觀(guān);面向“軟件系統設計與構造”主線(xiàn),規劃專(zhuān)業(yè)關(guān)鍵課程,實(shí)踐并求精CCSE的SE優(yōu)先課程設置方案;探索關(guān)鍵課程的教學(xué)內容與教學(xué)方法,建設相關(guān)教材與教學(xué)案例。
1.提出軟件工程專(zhuān)業(yè)課程改革的基本策略。在專(zhuān)業(yè)教學(xué)早期開(kāi)始培養學(xué)生工程觀(guān)、系統觀(guān)與產(chǎn)品觀(guān),引導學(xué)生持續以軟件工程觀(guān)的角度學(xué)習與體驗軟件系統分析、設計與構建的過(guò)程。在一年級開(kāi)設軟件工程課程,專(zhuān)業(yè)入門(mén)時(shí)就樹(shù)立學(xué)生的工程觀(guān)和系統觀(guān),將質(zhì)量、成本、度量、折中、決策、紀律、規范等工程理念貫穿后續課程,通過(guò)反復強化來(lái)培養學(xué)生牢固的工程理念以及基于工程理念解決問(wèn)題和進(jìn)行開(kāi)發(fā)的能力。
2.規劃與實(shí)踐SE優(yōu)先的專(zhuān)業(yè)關(guān)鍵課程。遵循工程的集成與創(chuàng )新特征,面向“軟件系統設計與構造”,按照軟件系統規模由小及大的次序建立專(zhuān)業(yè)教學(xué)主線(xiàn),即以小規模系統、中規模系統、中規模產(chǎn)品、大規模系統技術(shù)、應用領(lǐng)域來(lái)部署SE專(zhuān)業(yè)課程的展開(kāi)。在單門(mén)課程中強調構建系統的全面知識融合教學(xué),培養學(xué)生解決實(shí)際問(wèn)題的綜合能力。
3.探索適應培養卓越軟件人才的教學(xué)方法。軟件人才培養必須重視學(xué)生的工程實(shí)踐能力、設計能力與創(chuàng )新能力培養,重視實(shí)驗、實(shí)訓、實(shí)習等培養過(guò)程,特別是理論教學(xué)與實(shí)踐教學(xué)的完美融合。主要的教學(xué)方法包括:面向具體的軟件系統構造項目開(kāi)展綜合性知識教學(xué);加強課程教學(xué)案例與實(shí)踐用例建設,實(shí)施理論、案例、實(shí)踐相輔相成的教學(xué);探索校企合作教學(xué)、面向問(wèn)題教學(xué)、體驗式教學(xué)、面向實(shí)際教學(xué)、研討式教學(xué)、軟件創(chuàng )新設計競賽教學(xué)等適合卓越人才培養的新型教學(xué)方法。
三、課程體系框架
下圖給出了南京大學(xué)SE專(zhuān)業(yè)的課程體系框架[4,5],其中左側為重點(diǎn)建設的SE專(zhuān)業(yè)關(guān)鍵性基礎課程,右側為其他SE專(zhuān)業(yè)基礎課程和高級課程,后者在教學(xué)上較為成熟,故不贅述。
面向“軟件系統設計與構造”的SE專(zhuān)業(yè)關(guān)鍵課程共7門(mén),分別為計算系統基礎、軟件工程與計算Ⅰ、軟件工程與計算Ⅱ、軟件工程與計算Ⅲ、軟件需求工程、軟件系統設計與體系結構、人機交互的軟件工程方法,分別重點(diǎn)解決學(xué)生計算系統分層構建、個(gè)人級小規模軟件系統設計與構造、小組級中小規模軟件系統設計與構造、模擬團隊級中規模軟件產(chǎn)品設計與構建、大規模軟件系統的需求技術(shù)、大規模軟件系統的設計技術(shù)、交互式軟件系統設計與評估技術(shù)等關(guān)鍵性能力培養。
南京大學(xué)軟件工程專(zhuān)業(yè)課程體系結構圖
這7門(mén)關(guān)鍵課程均圍繞一個(gè)具體的軟件系統教學(xué)案例,融合構建系統所需的多方面知識展開(kāi)每門(mén)課程的教學(xué)。各課程都精心設計了一個(gè)教學(xué)講解用的軟件系統構建案例,并同步設計了一個(gè)培養學(xué)生工程能力的實(shí)踐用例。課程圍繞教學(xué)案例和實(shí)踐用例的構建活動(dòng)組織課程教學(xué)和實(shí)踐教學(xué)。課程同時(shí)力圖打破傳統課程的技術(shù)藩籬,將程序設計、軟件工程、交流與溝通、團隊動(dòng)力學(xué)、職業(yè)素質(zhì)、過(guò)程管理、工程經(jīng)濟學(xué)等知識進(jìn)行融合教學(xué),在案例中引導學(xué)生使用軟件工程的觀(guān)念來(lái)觀(guān)察、體驗和實(shí)踐計算系統軟件的設計與構建過(guò)程,訓練其軟件系統設計與構造的綜合能力。
四、課程描述
“計算系統基礎”,以一個(gè)經(jīng)典計算機指令集MIPS的簡(jiǎn)化版本DLX為線(xiàn)索,以C語(yǔ)言為載體,使初學(xué)者可以建立起完整的計算概念,了解經(jīng)典計算系統的工作原理,理解計算系統自底向上、逐次構造的過(guò)程;理解結構化程序設計,能夠利用自頂向下、逐步求精的方法完成小規模的結構化程序。具體教學(xué)內容包括:數據的機器級表示、數字邏輯、馮·諾伊曼模型、機器語(yǔ)言、匯編語(yǔ)言、輸入和輸出、Trap 機制和子例程、結構化程序設計和語(yǔ)言處理。
“軟件工程與計算Ⅰ”,在軟件工程理念指導下,側重于程序設計教學(xué)。以一個(gè)計算示例和實(shí)踐用例的迭代式增量開(kāi)發(fā)實(shí)踐為線(xiàn)索,全面培養學(xué)生在個(gè)人開(kāi)發(fā)級別的小規模軟件系統構建能力,讓學(xué)生初步體驗軟件工程方法與技術(shù)在系統開(kāi)發(fā)中的關(guān)鍵作用。具體教學(xué)內容包括:程序設計基礎、面向對象程序設計語(yǔ)言;OOA、OOD、調試與測試等軟件工程知識;個(gè)人級別的軟件開(kāi)發(fā)活動(dòng)管理、個(gè)人級別的軟件職業(yè)知識。
“軟件工程與計算Ⅱ”,以經(jīng)典軟件工程方法與技術(shù)為主線(xiàn),軟件設計與構造知識為教學(xué)重點(diǎn),軟件系統構建實(shí)例(計算系統示例與學(xué)生實(shí)踐用例)為切入點(diǎn),培養學(xué)生基于瀑布模型的、簡(jiǎn)單小組開(kāi)發(fā)級別的、中小規模軟件系統構建能力。具體教學(xué)內容包括:軟件工程歷史、軟件職業(yè)知識;適用于中小規模軟件產(chǎn)品開(kāi)發(fā)的軟件工程方法、原則與實(shí)踐;軟件工程方法指導下的程序設計原則與實(shí)踐;小組級別的簡(jiǎn)單軟件開(kāi)發(fā)活動(dòng)管理;包括代碼和重要文檔在內的關(guān)鍵軟件開(kāi)發(fā)制品。
“軟件工程與計算Ⅲ”,以螺旋模型和團隊實(shí)踐為特征,通過(guò)開(kāi)發(fā)一個(gè)中等規模軟件產(chǎn)品的方式,培養學(xué)生對程序設計和軟件工程方法的實(shí)際運用能力,同時(shí)強化學(xué)生的職業(yè)技能和項目管理能力。將學(xué)生組織成8人左右的團隊,按照6個(gè)階段(即項目啟動(dòng)階段、第一循環(huán)、第二循環(huán)、第三循環(huán)、第四循環(huán)、項目部署階段)合作完成一個(gè)具有一定復雜度的具體項目。在項目完成過(guò)程中,涉及需求、設計、實(shí)現和質(zhì)量保障,強調團隊協(xié)作、文檔寫(xiě)作、工具使用、陳述等能力,并在軟件團隊中對軟件開(kāi)發(fā)進(jìn)行管理。
“軟件需求工程”,以需求工程技術(shù)、軟件經(jīng)濟學(xué)和迭代過(guò)程為特征,結合工業(yè)界實(shí)例綜合分析,培養學(xué)生構建大規模軟件系統所需要的需求獲取、分析與建模能力,試圖讓學(xué)生把握需求工程工作給后繼軟件項目工作帶來(lái)的影響。具體教學(xué)內容包括:需求工程基礎、需求獲取方法與技術(shù)、需求分析方法、需求分析模型與建模技術(shù)、需求管理與需求工程過(guò)程知識、軟件工程經(jīng)濟學(xué)等。
“軟件系統設計與體系結構”,以軟件設計、體系結構、可復用軟件過(guò)程為特征,結合復雜工程案例及其重構,培養學(xué)生構建大規模軟件系統所需要的綜合設計技術(shù)能力。具體教學(xué)內容包括:軟件設計的要素、軟件設計的支持與評價(jià)、軟件設計方法、體系結構設計、詳細設計、基于中間件的設計、基于復用的設計和設計演化。
“人機交互的軟件工程方法”,以用戶(hù)為中心的設計與軟件再工程為特征,培養學(xué)生交互式產(chǎn)品開(kāi)發(fā)的軟件分析、設計和評估技術(shù)。具體教學(xué)內容包括:可用性工程、人機交互界面的經(jīng)典模型、人機交互的需求工程方法、人機交互的設計方法以及基于行為觀(guān)測與眼動(dòng)分析的交互評估技術(shù)等。
五、教學(xué)方法
軟件人才培養需要重視教學(xué)方法改革,面向軟件系統設計與構造的SE專(zhuān)業(yè)采用了一系列新型教學(xué)方法。
面向問(wèn)題教學(xué)要求各課程都以工程問(wèn)題開(kāi)始,并依照工程問(wèn)題的解決過(guò)程和活動(dòng)來(lái)組織教學(xué),這既體現了多種知識的融合運用,又培養了學(xué)生的問(wèn)題解決能力。體驗式教學(xué)要求各課程在實(shí)驗設計時(shí)必須考慮模擬現實(shí)環(huán)境的不確定性因素,讓學(xué)生體驗真實(shí)的開(kāi)發(fā)氛圍,這既能培養他們綜合運用各種知識與方法解決問(wèn)題的能力,又能重點(diǎn)訓練他們的折中、決策、溝通等非技術(shù)能力。面向實(shí)際教學(xué)要求各課程在講授軟件開(kāi)發(fā)方法與技術(shù)時(shí),要結合實(shí)踐調查數據說(shuō)明企業(yè)對不同方法、技術(shù)的選擇與權衡情況以及應用效果,要突出企業(yè)界的主流方法與技術(shù),遵循企業(yè)界的行業(yè)標準與規范,這既能讓學(xué)生更深入地理解方法與技術(shù),又能開(kāi)拓他們的視野。研討式教學(xué)要求各課程針對教學(xué)難點(diǎn)和重點(diǎn),給出啟發(fā)式問(wèn)題,讓學(xué)生自行收集資料,研討解決,這既培養了學(xué)生的問(wèn)題解決能力,又培養了他們的創(chuàng )新能力;A課程結合軟件創(chuàng )新設計競賽教學(xué)鼓勵低年級學(xué)生在導師指導下,結合課程教學(xué)內容,自由選題,參加軟件創(chuàng )新設計競賽,鼓勵學(xué)生創(chuàng )新。部分高級課程采取實(shí)訓實(shí)習后回顧教學(xué),通過(guò)理論教學(xué)考試和實(shí)訓實(shí)習后再回顧總結報告綜合評定分數,促使學(xué)生學(xué)習理論、實(shí)踐體驗、再總結提高,以提高他們的工程認知能力與創(chuàng )新能力。還有部分高級課程采取校企聯(lián)合設計課程、聯(lián)合實(shí)施教學(xué)的校企合作教學(xué)。