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