摘要:隨著軟件工程專業(yè)的出現(xiàn),高校中計(jì)算機(jī)專業(yè)的傳統(tǒng)基礎(chǔ)課程“軟件工程”的教學(xué)面臨著更多的挑戰(zhàn)。本文討論該課程的教學(xué)中出現(xiàn)的典型問(wèn)題和解決辦法。在分析該課程特點(diǎn)的基礎(chǔ)上,指出必須面向需求、突出重點(diǎn),然后結(jié)合實(shí)例,提出了一個(gè)面向普通高校、針對(duì)不同地區(qū)特點(diǎn)的軟件工程課程的教學(xué)方案,并與SWEBOK2004進(jìn)行了對(duì)比和分析。
關(guān)鍵詞:軟件工程;教學(xué)設(shè)計(jì);教學(xué)實(shí)踐;SWEBOK
中圖分類號(hào):G642文獻(xiàn)標(biāo)識(shí)碼:B
文章編號(hào):1672-5913 (2007) 20-0029-03
“軟件工程”課程在國(guó)內(nèi)的計(jì)算機(jī)科學(xué)與技術(shù)專業(yè)以及國(guó)際上2001年的計(jì)算機(jī)科學(xué)教學(xué)體系(IEEE CC2001)中都是不可或缺的核心專業(yè)知識(shí)課程,其主要內(nèi)容也是2004年由IEEE-CS/ACM/AIS建議的計(jì)算科學(xué)教學(xué)體系的關(guān)鍵知識(shí)域(CC2004)。近年來(lái),軟件工程的知識(shí)已經(jīng)成熟和系統(tǒng)化,足以構(gòu)成一個(gè)專業(yè)的知識(shí)體系,在國(guó)內(nèi)外大學(xué)的計(jì)算學(xué)科下面相繼出現(xiàn)了“軟件工程專業(yè)”。在這種情況下,傳統(tǒng)的“軟件工程”課程出現(xiàn)的新老問(wèn)題更加凸顯,急需高校、特別是我國(guó)普通高等院校探討,盡快地提出解決問(wèn)題的途徑和辦法。
1 “軟件工程”的教學(xué)難點(diǎn)
“軟件工程”課程的內(nèi)容廣博,涉及軟件開發(fā)的基本概念、原理、過(guò)程、方法、技術(shù)、標(biāo)準(zhǔn)、管理和工具等廣泛的技術(shù)與管理知識(shí)。作為一門課程,“軟件工程”所包含的知識(shí)面面具到,卻又難以深入。由于課程內(nèi)容不如數(shù)學(xué)嚴(yán)謹(jǐn),不如編程具體,不如數(shù)據(jù)庫(kù)實(shí)用,不如圖形學(xué)生動(dòng),加之學(xué)生基本上沒有參與過(guò)大型軟件開發(fā)的實(shí)踐,這就使得學(xué)生難以在一個(gè)學(xué)期就深入理解軟件工程中龐雜、抽象的內(nèi)容。在傳統(tǒng)的考試方式下,學(xué)生只能死記硬背,使得“軟件工程”課程變成了“第二政治課”。此外,由于軟件工程的理論和技術(shù)發(fā)展迅速,教材總是跟不上技術(shù)的發(fā)展;如果教師缺乏理論研究和實(shí)踐經(jīng)驗(yàn),教學(xué)就變得更加困難。
自2002年起,“軟件工程”在全國(guó)35所學(xué)校成為一個(gè)專業(yè)之后,龐大復(fù)雜的“軟件工程”從一門課程變成了一系列課程,知識(shí)的傳授相對(duì)容易起來(lái)??墒菍?duì)其它專業(yè)而言,則又面臨新的問(wèn)題:如何在學(xué)時(shí)不變甚至減少的條件下,把一個(gè)專業(yè)的知識(shí)濃縮在一門課程中,完整而有效地傳授給學(xué)生。
2 “軟件工程”課程之管見
“軟件工程”研究的是如何系統(tǒng)地構(gòu)造軟件的知識(shí),是計(jì)算學(xué)科中唯一涉及管理學(xué)的課程,內(nèi)容獨(dú)特,不可或缺。2004年IEEE和ACM的聯(lián)合公布的軟件工程知識(shí)體系(SWEBOK04)將其內(nèi)容概括為十個(gè)知識(shí)域,每個(gè)知識(shí)域又分若干子域,每個(gè)子域分為若干知識(shí)點(diǎn),等等。SWEBOK04的出現(xiàn)標(biāo)志著軟件工程知識(shí)的成熟和一門專業(yè)的誕生。
筆者根據(jù)對(duì)軟件工程的多年研究、對(duì)該課程的中英文教學(xué),以及給二學(xué)位本科和研究生講授“軟件設(shè)計(jì)方法”、“組件開發(fā)技術(shù)”、“軟件體系結(jié)構(gòu)”、“軟件項(xiàng)目管理”等相關(guān)課程的經(jīng)歷,認(rèn)為根本不可能在一門課程中把軟件工程的所有知識(shí)都讓學(xué)生掌握!前人嘗試的結(jié)果導(dǎo)致了無(wú)論是教材、還是教學(xué),都只能是走馬觀花、蜻蜓點(diǎn)水,造成教與學(xué)的困惑。SWEBOK04及其教學(xué)指南提出了軟件工程的基本知識(shí)范圍,卻沒有明確規(guī)定教學(xué)的詳細(xì)程度,允許靈活掌握。作為一門課程,我們應(yīng)該、而且必須結(jié)合實(shí)際、面向需要,合理地取舍傳授知識(shí)的寡眾與深淺。
事實(shí)上,國(guó)內(nèi)外的經(jīng)典與新近出版的“軟件工程”課程的教材基本上都可以覆蓋要求的知識(shí)內(nèi)容。但是,在選材的深度與廣度、知識(shí)的更新以及組織方面有明顯的側(cè)重。以軟件分析與設(shè)計(jì)為例,有些教材注重知識(shí)的全面性,把結(jié)構(gòu)化方法與面向?qū)ο蠹夹g(shù)并重地講解(如Pressman的最新版本,國(guó)防科大齊治昌、譚慶平和寧洪的教材);有些教材只講最新穎、更實(shí)用的基于UML的面向?qū)ο蠼7椒?作者如Sommerville,清華大學(xué)的孫家廣與劉強(qiáng))。
我們認(rèn)為,“軟件工程”作為一門課程是計(jì)算學(xué)科的入門課,可以借鑒管理學(xué)科,將其稱之為“軟件工程導(dǎo)論”或“軟件工程概論”。區(qū)分對(duì)待SWEBOK04中的知識(shí)點(diǎn),確定出了解、理解和掌握等不同程度的教學(xué)要求。下面就結(jié)合實(shí)例介紹一個(gè)具體的教學(xué)設(shè)計(jì)和實(shí)施。
3 “軟件工程”課程教學(xué)內(nèi)容的一個(gè)設(shè)計(jì)
3.1背景
筆者所在大學(xué)是一所省屬綜合性大學(xué),界于教學(xué)型與研究型大學(xué)之間,目前更偏重于教學(xué)型。畢業(yè)生多數(shù)在省內(nèi)、特別是在青島工作。自2003年起青島市把軟件列為優(yōu)先發(fā)展產(chǎn)業(yè),重點(diǎn)扶持軟件外包、信息家電等產(chǎn)業(yè)領(lǐng)域。我校是全國(guó)35所成立了軟件學(xué)院的院校之一,負(fù)責(zé)培養(yǎng)軟件工程專業(yè)的本科學(xué)生。工程碩士的培養(yǎng)仍由筆者所在的信息工程學(xué)院負(fù)責(zé)。
我院最近5年的考研率在20%左右,大多數(shù)本科生畢業(yè)后面臨就業(yè)問(wèn)題。除升學(xué)與出國(guó)外,我院近80%學(xué)生的就業(yè)去向包括:軟件企業(yè)、非軟件企業(yè)、政府部門與事業(yè)單位、自謀職業(yè)等。只有在軟件企業(yè)或者大型傳統(tǒng)企業(yè)IT部門的畢業(yè)生從事軟件開發(fā),其它大多數(shù)計(jì)算機(jī)畢業(yè)生從事與軟件開發(fā)無(wú)關(guān)的職業(yè),如市場(chǎng)、銷售、采購(gòu)、管理等。為了滿足社會(huì)需要,更好地為地方經(jīng)濟(jì)發(fā)展服務(wù),我院經(jīng)將計(jì)算機(jī)科學(xué)與技術(shù)分為3個(gè)方向供學(xué)生選擇:軟件技術(shù)與理論、嵌入式系統(tǒng)和網(wǎng)絡(luò)工程?!败浖こ獭闭n程是所有專業(yè)方向的必修基礎(chǔ)課。
3.2需求分析與教學(xué)內(nèi)容的設(shè)計(jì)
在這些背景下,我們的“軟件工程”課程的教學(xué)方針是:滿足社會(huì)需求、面向?qū)W生未來(lái);將課程定位為:全面地介紹軟件工程學(xué)的基本知識(shí),突出大型軟件開發(fā)和管理的基本原理、方法和實(shí)用技術(shù),滿足計(jì)算學(xué)科對(duì)系統(tǒng)化軟件構(gòu)造知識(shí)的基本要求,同時(shí)成為學(xué)習(xí)軟件工程專業(yè)的先導(dǎo)課程。課程名稱也相應(yīng)地改為“軟件工程導(dǎo)論”;在滿足軟件工程知識(shí)點(diǎn)和學(xué)科體系的同時(shí),根據(jù)市場(chǎng)需求,適當(dāng)增減內(nèi)容,把具體的實(shí)用技術(shù)講深講透,同時(shí)介紹前沿課題,提高學(xué)生的學(xué)習(xí)興趣。
表1是我院“軟件工程導(dǎo)論”課程的理論授課內(nèi)容與課時(shí)安排(不含課程緒論與課堂練習(xí)、總結(jié)的4個(gè)學(xué)時(shí)),按照SWEBOK04提出的10個(gè)知識(shí)域進(jìn)行了重新組織。由于選用的教材以及實(shí)際教學(xué)內(nèi)容的組織與SWEBOK04的知識(shí)域并非完全一致,因而出現(xiàn)小數(shù)點(diǎn)學(xué)時(shí)。如“軟件工程工具與方法”知識(shí)域,我們?cè)谑谡n章節(jié)介紹相關(guān)的軟件工具,如在軟件需求和設(shè)計(jì)中使用了ROSE和MS Visio;在講解項(xiàng)目進(jìn)度中示意了MS Project;在軟件測(cè)試中提到了JUnit。此外,還按照教材集中地講解了CASE概念與工具,補(bǔ)充了Eclipse以及最新的青鳥系統(tǒng)。
為便于對(duì)比,我們將“軟件工程導(dǎo)論”的教學(xué)內(nèi)容按照SWEBOK04的知識(shí)域計(jì)算出每個(gè)知識(shí)域所用學(xué)時(shí)占總課時(shí)的百分比;同時(shí)計(jì)算出SWEBOK04中10個(gè)知識(shí)域中的子知識(shí)域在整個(gè)子知識(shí)域中的百分比,如圖1所示。
從圖1可以看大:我們對(duì)產(chǎn)品工程的設(shè)計(jì)和測(cè)試講授了更多的內(nèi)容。相比于SWEBOK04,我們的設(shè)計(jì)部分超出一倍,軟件測(cè)試的內(nèi)容則多出三分之二。對(duì)于同樣重要的需求分析則沒有增加更多的內(nèi)容,這主要是考慮到需求分析是超越初級(jí)軟件工程師的知識(shí),需要溝通技巧、領(lǐng)域知識(shí)和實(shí)踐經(jīng)驗(yàn)等綜合知識(shí)與能力,屬于系統(tǒng)分析員的職責(zé),應(yīng)屆本科畢業(yè)生基本上達(dá)不到。對(duì)軟件構(gòu)造以及軟件支持方面的知識(shí)(如軟件配置管理)則縮減了學(xué)時(shí),一個(gè)原因與所選教材有關(guān)。在軟件質(zhì)量方面,則補(bǔ)充了CMMI的過(guò)程改進(jìn)及其結(jié)合TSP/PSP的內(nèi)容,使得我們的學(xué)時(shí)略微高出。
在處理知識(shí)域時(shí),我們遵循了“突出重點(diǎn)、面向?qū)嵱谩钡闹笇?dǎo)思想,舉例如下。我們?cè)谲浖:蜏y(cè)試方面加大了學(xué)時(shí),以便學(xué)生掌握這兩個(gè)領(lǐng)域的技術(shù);同時(shí)減弱了對(duì)其它知識(shí)域的學(xué)習(xí)要求,只需要理解、甚至了解有關(guān)的知識(shí)。例如,我們?cè)谛枨蠓治雠c設(shè)計(jì)中都講解了結(jié)構(gòu)化方法和面向?qū)ο蠓椒?,但是,所分配的時(shí)間差別巨大。對(duì)于結(jié)構(gòu)化方法,主要介紹其基本思想、常用工具及其簡(jiǎn)單應(yīng)用,如DFD圖、數(shù)據(jù)字典、程序結(jié)構(gòu)圖、判定樹、PDL等。對(duì)面向?qū)ο蠹夹g(shù),則大大地?cái)U(kuò)充了選用教材的內(nèi)容,加上相應(yīng)的實(shí)驗(yàn)課程,共有近30學(xué)時(shí),可以當(dāng)作一個(gè)“基于UML的軟件建?!钡男⌒驼n程。目的是使學(xué)生認(rèn)識(shí)到軟件工程并非是空虛無(wú)物的條條框框,開發(fā)軟件的工作在編程之外還有分析、設(shè)計(jì)和測(cè)試等。而且希望學(xué)生通過(guò)該導(dǎo)論課程實(shí)實(shí)在在地掌握一種當(dāng)前常用的軟件建模技術(shù),以便能夠在實(shí)際工作中盡快地熟練使用。圖2示意了“軟件工程導(dǎo)論”中對(duì)軟件設(shè)計(jì)有關(guān)知識(shí)點(diǎn)分配學(xué)時(shí)的比例。
4實(shí)踐與體會(huì)
教學(xué)內(nèi)容的變更僅僅是改善教學(xué)質(zhì)量的一個(gè)方面,還需要改變教學(xué)方式,舉例如下。
例1:傳授知識(shí)的過(guò)程要從日常生活到軟件領(lǐng)域。在講解過(guò)程改進(jìn)時(shí),我們以劉翔為例提出問(wèn)題:劉翔身后的科研小組和上百萬(wàn)元的投資,包括攝像、動(dòng)作分解和分析是為了什么?表面上看是為了改進(jìn)跨欄和起跑的動(dòng)作(軟件開發(fā)過(guò)程),實(shí)質(zhì)上最終是為了改進(jìn)其跨欄成績(jī)(軟件產(chǎn)品)。從學(xué)生們比較熟悉、容易理解的事情開始,立刻就吸引了他們的注意力,進(jìn)而簡(jiǎn)化了對(duì)軟件過(guò)程及其改進(jìn)的講解。
例2:綜合運(yùn)用學(xué)過(guò)的知識(shí)。在講開發(fā)高可信軟件時(shí),把容錯(cuò)技術(shù)與面向?qū)ο缶幊讨挟惓L幚淼臋C(jī)制結(jié)合起來(lái),加深了學(xué)生對(duì)容錯(cuò)技術(shù)的理解、對(duì)異常處理的認(rèn)識(shí);在介紹形式化技術(shù)時(shí),通過(guò)演示斷言在Java中的實(shí)現(xiàn),使學(xué)生認(rèn)識(shí)到這些看起來(lái)玄乎的理論正在逐步實(shí)現(xiàn)。
例3:不失時(shí)機(jī)地簡(jiǎn)單介紹相關(guān)的研究動(dòng)向以及國(guó)內(nèi)的相關(guān)工作,讓學(xué)生了解軟件工程學(xué)最新的理論研究,對(duì)少數(shù)優(yōu)秀的學(xué)生指出鉆研方向、提高研究興趣。例如,我們?cè)谡n堂上簡(jiǎn)介了最近三年中國(guó)首次主辦的“軟件工程國(guó)際大會(huì)”,“軟件過(guò)程改進(jìn)”和“軟件工程理論”等國(guó)際高規(guī)格專業(yè)會(huì)議,包括其中的主題報(bào)告。
教學(xué)內(nèi)容和教學(xué)方法的改進(jìn),極大地提高了學(xué)生的學(xué)習(xí)熱情,成績(jī)也顯著提高。限于篇幅,我們?cè)诳荚?、課程設(shè)計(jì)以及實(shí)踐教學(xué)方面的嘗試不在本文討論范圍。
我們將繼續(xù)搜集和分析不同專業(yè)方向的學(xué)生對(duì)該導(dǎo)論課程的反應(yīng),針對(duì)性地調(diào)整有關(guān)內(nèi)容,以便更好地滿足社會(huì)的需要,如針對(duì)嵌入式系統(tǒng)的軟件開發(fā),增加實(shí)時(shí)系統(tǒng)的分析與設(shè)計(jì)技術(shù)方面的知識(shí)。
參考文獻(xiàn)
[1] 麥中凡. 解讀SWEBOK 2004[J]. 計(jì)算機(jī)教育,2004,(10).
[2] Computing Curricula 2004.Overview Report. November 22, 2004, http://www.acm.org.
[3] Software Engineering 2004. CC 2004 Series, August 23, 2004, http://www.acm.org.
[4] 劉洪、舒堅(jiān)、羅海平. 一般工科院校軟件工程專業(yè)課程體系設(shè)置[A].大學(xué)計(jì)算機(jī)課程報(bào)告論壇論文集[C]. 北京:高等教育出版社,2006. 465-469.
作者簡(jiǎn)介
李勁華(1963—)男,博士,副教授,主要從事軟件工程的教學(xué)與研究。
楊厚俊(1965—)男,碩士,副教授,分管教學(xué)副院長(zhǎng)。
通信地址:青島大學(xué)信息工程學(xué)院 266071
電話:13969678995
E-mail:lijh@qdu.edu.cn, qduli@126.com