劉 超
摘要:軟件工程領(lǐng)域的大量最新研究成果源源不斷地轉(zhuǎn)向?qū)嵱?成為軟件產(chǎn)業(yè)應(yīng)對(duì)新挑戰(zhàn)的重要方法和工具,并因此被納入大學(xué)的“軟件工程”課程中,不斷地充實(shí)和更新“軟件工程”課程的內(nèi)容。本文就“軟件工程”課程體系建設(shè)中的一些基本問題進(jìn)行了探討,包括“軟件工程”課程體系建設(shè)的總體目標(biāo)、指導(dǎo)思想、課程體系的總體框架,以及每門課程的講授內(nèi)容、彼此之間的銜接等,并針對(duì)本學(xué)科的人才培養(yǎng)目標(biāo),提出了一些建議和想法,以供進(jìn)一步的研究和探討。
關(guān)鍵詞:軟件工程;基本架構(gòu);課程體系
中圖分類號(hào):G642文獻(xiàn)標(biāo)識(shí)碼:B
1概述
隨著我國(guó)現(xiàn)代化和信息化建設(shè)的快速發(fā)展,計(jì)算機(jī)軟件產(chǎn)業(yè)已初具規(guī)模,并呈現(xiàn)持續(xù)快速發(fā)展的態(tài)勢(shì)。社會(huì)對(duì)軟件工程人才有著旺盛的需求,并要求高校培養(yǎng)出基礎(chǔ)理論和專業(yè)知識(shí)扎實(shí)、工程實(shí)踐能力強(qiáng)、具有持續(xù)創(chuàng)新能力的高層次復(fù)合型軟件工程人才。他們需熟練地掌握和運(yùn)用先進(jìn)的軟件工程化管理方法和最新的軟件技術(shù),同時(shí),面對(duì)新挑戰(zhàn)要善于鉆研、勇于創(chuàng)新,以便能夠很快地成為軟件企業(yè)的技術(shù)中堅(jiān)和引領(lǐng)軟件企業(yè)發(fā)展的領(lǐng)導(dǎo)者。
早在上世紀(jì)八十年代初期,“軟件工程”課程便已經(jīng)成為北京航空航天大學(xué)(以下簡(jiǎn)稱北航)計(jì)算機(jī)科學(xué)與工程系(現(xiàn)為計(jì)算機(jī)學(xué)院)的研究生學(xué)位課,隨后又成為本科生的專業(yè)必修課程。九十年代,本科生和研究生課程體系又逐步增加了“軟件測(cè)試技術(shù)”、“個(gè)人軟件過程”、“面向?qū)ο蠹夹g(shù)”、“人機(jī)用戶界面設(shè)計(jì)”、“信息系統(tǒng)分析與設(shè)計(jì)”、“軟件過程管理”、“軟件體系結(jié)構(gòu)”、“軟件需求管理”、“軟件項(xiàng)目管理”等系列課程,不斷強(qiáng)化對(duì)軟件工程技術(shù)和管理方面專業(yè)知識(shí)的講授,以及規(guī)范化軟件工程方法的訓(xùn)練。2001年以來,我們將量化的軟件過程控制思想和一些日趨成熟的工程訓(xùn)練方法引入到軟件工程課程實(shí)踐中,并指導(dǎo)“軟件工程”課程實(shí)踐,進(jìn)一步強(qiáng)化對(duì)學(xué)生軟件工程實(shí)踐能力的培養(yǎng)。
然而,面對(duì)不斷涌現(xiàn)出來的軟件工程新概念、新方法、新技術(shù)和新工具,如UML、CMM&CMMI、構(gòu)件化開發(fā)等,“軟件工程”課程體系的設(shè)計(jì)和教學(xué)方法的改革依然是一個(gè)嚴(yán)峻的課題:
(1) 從課程設(shè)置和講授方法上看,“軟件工程”學(xué)科特有的工程性,技術(shù)與管理的綜合性,新興學(xué)科的快速發(fā)展和變化等特點(diǎn),使得“軟件工程”課程體系設(shè)計(jì)面臨一系列突出問題,包括培養(yǎng)目標(biāo)的確定、授課內(nèi)容的遴選、課程系列的設(shè)計(jì)和組織、講授的方法、實(shí)踐環(huán)節(jié)的設(shè)計(jì)、考核的方式、學(xué)習(xí)效果的評(píng)判、課程體系的評(píng)估與持續(xù)改進(jìn)等。特別是在課程設(shè)計(jì)和軟件開發(fā)實(shí)踐環(huán)節(jié)中,由于缺乏對(duì)過程的有效指導(dǎo)和控制,難以有效地培養(yǎng)學(xué)生的軟件工程能力,包括在軟件過程管理、軟件項(xiàng)目管理、軟件配置管理、軟件質(zhì)量管理,以及需求分析、體系結(jié)構(gòu)設(shè)計(jì)、規(guī)范的模型構(gòu)建與分析、文檔撰寫等方面的基本訓(xùn)練。
(2) 從教學(xué)效果上看,來自學(xué)生、教師,以及社會(huì)各方面的反饋表明,“軟件工程”課程系列的重要性已得到普遍認(rèn)可,然而實(shí)際效果與期望之間還存在著顯著差距,突出表現(xiàn)在“軟件工程”課程大多屬于“基本概念和方法的概論”加上部分“新技術(shù)的講座”。這使得學(xué)生的學(xué)習(xí)效果不佳,普遍存在基礎(chǔ)知識(shí)掌握不牢固、基本概念的理解含混在后續(xù)課程、畢業(yè)設(shè)計(jì)和軟件開發(fā)實(shí)踐中無法自覺有效地運(yùn)用成熟的軟件開發(fā)方法。
此外,由于“軟件工程”相關(guān)課程的設(shè)置和內(nèi)容的選擇主要取決于任課老師的個(gè)人觀點(diǎn),缺乏整體和系統(tǒng)的設(shè)計(jì)及論證。
針對(duì)上述問題,北航軟件工程研究所對(duì)“軟件工程”課程體系開展了長(zhǎng)期的研究。自2001年以來,以“軟件工程”課程系列的主講教師為主體,我們分別從“軟件工程”課程體系建設(shè)的總體目標(biāo)、指導(dǎo)思想、課程體系的總體框架、每門課程的講授內(nèi)容、彼此之間的銜接和課程實(shí)踐設(shè)計(jì)等方面進(jìn)行了反復(fù)探討,重點(diǎn)開展了面向本科生和研究生的一體化“軟件工程”課程體系研究與建設(shè),進(jìn)一步凝練了軟件工程人才培養(yǎng)的基本理念和目標(biāo),以及與之相適應(yīng)的課程體系。
2指導(dǎo)思想和目標(biāo)
北航計(jì)算機(jī)科學(xué)與技術(shù)學(xué)科是國(guó)家重點(diǎn)一級(jí)學(xué)科。本學(xué)科確定的建設(shè)目標(biāo)是成為國(guó)內(nèi)一流、國(guó)際知名的高水平研究型學(xué)科,培養(yǎng)高素質(zhì)、高層次人才。作為本學(xué)科的骨干課程,“軟件工程”課程體系的基本定位是面向軟件行業(yè)發(fā)展的基本需求,培養(yǎng)基礎(chǔ)理論和專業(yè)知識(shí)扎實(shí)、工程實(shí)踐能力強(qiáng)并具有團(tuán)隊(duì)協(xié)作和創(chuàng)新能力的高層次軟件工程復(fù)合型人才。
為此,我們確立了“軟件工程”課程體系建設(shè)的指導(dǎo)思想,即從多個(gè)層面向?qū)W生系統(tǒng)地和漸進(jìn)式地介紹日漸完善、成熟的主流軟件工程化方法、技術(shù)和工具,并強(qiáng)化規(guī)范和基于統(tǒng)計(jì)過程控制的軟件工程訓(xùn)練,同時(shí)引導(dǎo)學(xué)生積極探索最新的研究領(lǐng)域,及時(shí)了解最新的研究成果,培養(yǎng)學(xué)生在軟件工程實(shí)踐中發(fā)現(xiàn)問題和解決問題的能力,使學(xué)生深刻理解并牢固掌握基本思想和方法,進(jìn)而逐步培養(yǎng)學(xué)生在大型軟件系統(tǒng)開發(fā)過程中自覺運(yùn)用軟件工程化方法的能力、組織管理與團(tuán)隊(duì)協(xié)作能力以及對(duì)于軟件工程化方法的持續(xù)改進(jìn)與創(chuàng)新能力。
3 “軟件工程”課程體系的基本架構(gòu)
軟件工程領(lǐng)域的新問題、新概念、新方法、新技術(shù)、新工具層出不窮。一方面,軟件工程領(lǐng)域的知識(shí)爆炸向課程的設(shè)置提出了挑戰(zhàn);另一方面,其知識(shí)結(jié)構(gòu)的相對(duì)穩(wěn)定性和發(fā)展規(guī)律也提供了構(gòu)建“軟件工程”課程體系的基本架構(gòu)的基礎(chǔ)。通過對(duì)軟件工程知識(shí)體系的深入剖析以及我們20多年軟件工程課程成功教學(xué)實(shí)踐的凝練,對(duì)照軟件工程知識(shí)體系SWEBOK、ACM和教育部頒布的本科生軟件工程方向?qū)I(yè)規(guī)范,本文提出了一種基于軟件工程技術(shù)和管理雙主線,面向本科生和研究生兩個(gè)層級(jí)的“軟件工程”課程體系基本架構(gòu),簡(jiǎn)稱為指數(shù)型(2n)組合架構(gòu),如圖1所示。在這個(gè)架構(gòu)下,我們將課程體系的總體目標(biāo)、講授內(nèi)容和實(shí)踐要點(diǎn)等進(jìn)行適當(dāng)?shù)姆纸?以確定各門課程的目的、主要內(nèi)容以及相互之間的關(guān)聯(lián),并幫助學(xué)生根據(jù)需求選擇不同的課程組合。
該架構(gòu)包括如下基本要素:
(1) 兩條主線:軟件工程技術(shù)和軟件工程管理;
(2) 兩類學(xué)生:本科生和研究生;
(3) 兩個(gè)層次:面向本科生的基礎(chǔ)知識(shí)和基本訓(xùn)練、面向研究生的系統(tǒng)化方法與綜合實(shí)踐;
(4) 兩種能力:規(guī)范化的工程實(shí)施(包括開發(fā)和管理)能力和持續(xù)改進(jìn)與創(chuàng)新能力;
(5) 兩類課程:軟件工程技術(shù)類課程、軟件工程管理類課程;
(6) 兩種教學(xué)方法相結(jié)合:課堂講授、小型項(xiàng)目實(shí)踐的過程追蹤與指導(dǎo);
(7) 兩方面的考評(píng):基礎(chǔ)知識(shí)和基本能力的考試、小型項(xiàng)目實(shí)踐的過程結(jié)果。
在這種架構(gòu)下,要素之間彼此交叉支撐,各類課程系列得以分層細(xì)化,并具有以下特點(diǎn):
(1) 主線清楚,面向技術(shù)和面向管理的兩類課程的劃分有助于突出各自的側(cè)重點(diǎn),避免教學(xué)內(nèi)容的偏頗和重復(fù),強(qiáng)調(diào)彼此的關(guān)聯(lián)與支撐。
(2) 層次分明,界定了本科生和研究生各自的學(xué)習(xí)重點(diǎn)和對(duì)能力培養(yǎng)的基本要求。
(3) 分級(jí)細(xì)化,明確專業(yè)課程及其定位,優(yōu)選各類選修課程。
(4) 易于調(diào)整,在基本結(jié)構(gòu)保持相對(duì)穩(wěn)定的前提下,可以針對(duì)新近的技術(shù)發(fā)展動(dòng)態(tài),分層級(jí)地對(duì)各門課程的內(nèi)容進(jìn)行調(diào)整,或增減課程。
(5) 易于評(píng)估,基于該架構(gòu),有助于直觀地評(píng)估課程的增減或者課程內(nèi)容的調(diào)整對(duì)整個(gè)課程體系的影響。
4 “軟件工程”課程系列的設(shè)計(jì)
上述“軟件工程”課程體系的基本架構(gòu)可以用來指導(dǎo)課程系列的設(shè)計(jì)和組織以及對(duì)課程系列講授內(nèi)容的重點(diǎn)、覆蓋面等進(jìn)行評(píng)估。
對(duì)于“軟件工程”專業(yè)的學(xué)生而言,應(yīng)當(dāng)學(xué)習(xí)課程包含了三條課程主線(或稱三類課程),其中計(jì)算機(jī)科學(xué)與技術(shù)專業(yè)課程是公共專業(yè)課程體系,而軟件工程技術(shù)和軟件工程管理這兩類課程構(gòu)成軟件工程課程系列。表1中扼要地列舉了軟件工程方向的本科生和研究生應(yīng)當(dāng)選修的課程系列(其中陰影部分為重點(diǎn)課程),包括:
(1) 計(jì)算機(jī)科學(xué)與技術(shù)學(xué)科/專業(yè)公共基礎(chǔ)課程:奠定計(jì)算機(jī)專業(yè)基礎(chǔ),擴(kuò)寬知識(shí)面。
① 公共課:數(shù)學(xué)分析/高等代數(shù)、大學(xué)英語、工程訓(xùn)練、大學(xué)語文、第二外語等。
② 基礎(chǔ)課:
a) 計(jì)算機(jī)基礎(chǔ):計(jì)算機(jī)導(dǎo)論、算法和數(shù)據(jù)結(jié)構(gòu)、高級(jí)語言程序設(shè)計(jì)(1、2);
b) 計(jì)算機(jī)理論:數(shù)理邏輯、集合論和圖論、組合數(shù)學(xué)、概率統(tǒng)計(jì)(A);
c) 計(jì)算機(jī)硬件:數(shù)子電路和數(shù)字邏輯、計(jì)算機(jī)原理和匯編語言、計(jì)算機(jī)接口與通訊、計(jì)算機(jī)體系結(jié)構(gòu)、計(jì)算機(jī)網(wǎng)絡(luò);
d) 計(jì)算機(jī)軟件:編譯技術(shù)、操作系統(tǒng)、數(shù)據(jù)庫(kù)系統(tǒng)原理。
(2) 軟件工程專業(yè)課程,包括:
① 軟件工程技術(shù)類課
a) 必修課:面向?qū)ο蠹夹g(shù);
b) 選修課:
i. 軟件代碼開發(fā)技術(shù)、軟件質(zhì)量保證與軟件測(cè)試技術(shù)、軟件工程工具與應(yīng)用;
ii. 相關(guān)選修課:嵌入式軟件開發(fā)技術(shù)、Web應(yīng)用軟件開發(fā)技術(shù)、信息系統(tǒng)分析與設(shè)計(jì)。
② 軟件工程管理類課
a) 必修課:軟件工程導(dǎo)論;
b) 選修課:
i. 個(gè)體軟件過程、軟件項(xiàng)目管理、軟件配置管理;
ii. 相關(guān)選修課:團(tuán)隊(duì)協(xié)作與社會(huì)實(shí)踐、軟件經(jīng)濟(jì)學(xué)基礎(chǔ)。
5結(jié)論
本文簡(jiǎn)要介紹了本學(xué)科“軟件工程”課程體系建設(shè)中需要考慮的主要問題,給出了一種“軟件工程”課程體系基本框架,分析了其主要特點(diǎn),并在此基礎(chǔ)上,給出了一個(gè)基本的“軟件工程”課程系列。
如前所述,課程體系建設(shè)涉及多個(gè)要素,“軟件工程”課程體系更受到軟件工程這一新興學(xué)科發(fā)展的影響,因此,其基本架構(gòu)應(yīng)當(dāng)能夠很好地組織軟件課程系列,并適應(yīng)軟件工程的發(fā)展和變化。在這樣一個(gè)基本框架下,能夠比較清晰地判斷課程及其內(nèi)容的覆蓋面和取舍是否恰當(dāng),為課程系列的構(gòu)建提供了有效的支持。
教學(xué)方法的改革,特別是與之配套的教學(xué)實(shí)踐的設(shè)計(jì)和對(duì)實(shí)踐過程的指導(dǎo),是一項(xiàng)艱巨的、富有挑戰(zhàn)性和長(zhǎng)期性的研究課題。多年來,我們針對(duì)本科生的軟件工程課、研究生的高級(jí)軟件工程課等課程各自的要求和特點(diǎn),進(jìn)行了多年的研究和實(shí)踐,積累了重要的經(jīng)驗(yàn)。實(shí)踐證明,參考這樣的架構(gòu),有助于相關(guān)課程的組織和協(xié)調(diào)以及持續(xù)的改進(jìn)。
參考文獻(xiàn):
[1] 北京航空航天大學(xué). 北京航空航天大學(xué)計(jì)算機(jī)學(xué)院“十一五”發(fā)展規(guī)劃[Z]. 2006.
[2]Alain Abran, école, James W. Moore. Guide to the Software Engineering Body of Knowledge, 2004 Version, SWEBOK?[Z]. IEEE Computer Society(2001-2003).
[3] 教育部計(jì)算機(jī)科學(xué)與技術(shù)專業(yè)教學(xué)指導(dǎo)委員會(huì). 計(jì)算機(jī)科學(xué)與技術(shù)本科專業(yè)規(guī)范(軟件工程方向)[Z]. 2004.