明 勇
摘要:《軟件工程》是計(jì)算機(jī)科學(xué)與技術(shù)專業(yè)軟件方向核心課程之一,是指導(dǎo)計(jì)算機(jī)軟件開發(fā)和維護(hù)的一門綜合性課程,是計(jì)算機(jī)專業(yè)學(xué)生必須掌握的技能之一,因此,提高軟件工程課程的教學(xué)質(zhì)量對(duì)學(xué)生的今后的學(xué)習(xí)和工作都具有極其重要的意義。該文結(jié)合教學(xué)實(shí)踐,對(duì)大學(xué)計(jì)算機(jī)軟件工程課程改革進(jìn)行了探討。
關(guān)鍵詞:軟件工程;大學(xué)教育;實(shí)踐
中圖分類號(hào):G642文獻(xiàn)標(biāo)識(shí)碼:A文章編號(hào):1009-3044(2009)34-9751-02
Analysis of the Current Curriculum Reform of Computer Software Engineering
MING Yong
Abstract: "Software Engineering" is the software of Computer Science and Technology, one of the direction of the core curriculum, is to guide computer software development and maintenance of a comprehensive curriculum, is a computer science students must master one of the skills, therefore, improve the software engineering courses teaching quality of the students for future study and work of great importance. In this paper, teaching practice, on the University's computer software engineering curriculum reform were discussed.
Key words: software engineering; university education; Practice
軟件工程是一門學(xué)科同時(shí)也是一門科學(xué),軟件工程課程上所學(xué)習(xí)的知識(shí)將影響學(xué)生以后的職業(yè)生涯?!败浖{(lán)領(lǐng)”,就是指那些至少掌握一門開發(fā)語言或開發(fā)工具,主要擔(dān)負(fù)編程、錄入、測(cè)試等大量的基礎(chǔ)性技術(shù)工作,包括客戶服務(wù)、程序開發(fā)、商業(yè)策劃、媒體編程等,所從事的任務(wù)與軟件工程中的需求分析、系統(tǒng)分析、概要設(shè)計(jì)無關(guān),但對(duì)軟件工程化開發(fā)的過程和規(guī)范有一定認(rèn)識(shí)的編程人員。他們掌握的計(jì)算機(jī)理論知識(shí)可能不很充足,但對(duì)一般的編程任務(wù)都能較快、較好地解決,且具有良好的開發(fā)潛能。他們對(duì)于進(jìn)行新產(chǎn)品、新技術(shù)的探索工作,可能還不勝任,但足以勝任一般開發(fā)任務(wù)。在一個(gè)大型軟件開發(fā)項(xiàng)目中,需要通過他們將軟件的設(shè)想轉(zhuǎn)化成現(xiàn)實(shí)的產(chǎn)品。簡(jiǎn)言之,“軟件藍(lán)領(lǐng)”就是能夠根據(jù)流程圖進(jìn)行編碼,在IT高技術(shù)平臺(tái)上熟練從事大量重復(fù)性操作的的職業(yè)軟件工程師。
1 軟件工程概念簡(jiǎn)介
1983年,IEEE(Institute of Electrical& Electronic Engi-neers,電氣與電子工程師協(xié)會(huì))給出了定義:軟件工程是研究和應(yīng)用如何以系統(tǒng)化的、規(guī)范的、可度量的方法去開發(fā)、運(yùn)行和維護(hù)軟件,即把工程化應(yīng)用到軟件上。簡(jiǎn)而言之,軟件工程就是將軟件開發(fā)作為一個(gè)工程項(xiàng)目來進(jìn)行管理,將軟件開發(fā)過程細(xì)化為若干合理的子項(xiàng)目,對(duì)軟件開發(fā)過程進(jìn)行科學(xué)的管理,從而生產(chǎn)出高質(zhì)量的軟件產(chǎn)品。軟件生存期是指軟件從孕育到停止使用的全過程。軟件生存期包括6個(gè)階段工作,即制定計(jì)劃、需求分析、設(shè)計(jì)、程序編制、測(cè)試及運(yùn)行維護(hù)。軟件工程是軟件由“手工作坊”發(fā)展成為軟件開發(fā)的“工程化”管理的必要手段,是軟件危機(jī)得以解決的必要途徑。“工欲善其事,必先利其器”,軟件工程是軟件公司“利其器”的必要手段,所以在大學(xué)階段計(jì)算機(jī)專業(yè)開設(shè)軟件工程相關(guān)課程是很必要的。
2 軟件工程課程特點(diǎn)
2.1 抽象性強(qiáng)
軟件工程的方法、原理和技術(shù)是位于所有具體項(xiàng)目之上的,并沒有涉及某個(gè)項(xiàng)目的具體信息,也就是說,它們是抽象的。軟件工程的理論與學(xué)生的認(rèn)知水平差距較大,往往要在學(xué)生經(jīng)過幾個(gè)項(xiàng)目的失敗后,才能理解軟件工程的原理,所以針對(duì)于在校學(xué)生來說,軟件工程是抽象的,是計(jì)算機(jī)課程中的“政治”課。
軟件工程是計(jì)算機(jī)科學(xué)與技術(shù)及相關(guān)專業(yè)的一門十分重要的專業(yè)課程,其技術(shù)、方法和原理等十分復(fù)雜,不易掌握。
現(xiàn)今隨著軟件項(xiàng)目的復(fù)雜化和軟件公司部門分工的明確化,要求軟件項(xiàng)目的管理者、開發(fā)人員和測(cè)試人員以及質(zhì)量保證人員都必須掌握軟件工程的技術(shù)、原理和方法。軟件工程課程的教學(xué)效果就直接決定了學(xué)生畢業(yè)后從事軟件實(shí)際項(xiàng)目的管理和開發(fā)的能力。
2.2 對(duì)大型項(xiàng)目的總結(jié)
軟件工程是對(duì)多年的大型軟件開發(fā)實(shí)踐的總結(jié)和抽象,將其中好的開發(fā)方法和技術(shù)進(jìn)行抽象,并對(duì)一些經(jīng)過實(shí)踐證明錯(cuò)誤的方法進(jìn)行了歸納,提醒后人避免錯(cuò)誤的發(fā)生。軟件工程著眼于大型復(fù)雜軟件項(xiàng)目開發(fā)的指導(dǎo),對(duì)于小型的軟件項(xiàng)目來說,指導(dǎo)意義不容易體現(xiàn)。
2.3 軟件工程的效果體現(xiàn)在軟件開發(fā)的全過程中
軟件生命周期包括問題定義、可行性研究、需求分析、設(shè)計(jì)、編碼、測(cè)試、運(yùn)行和維護(hù)多個(gè)階段。某個(gè)階段的成果對(duì)于工程的影響往往不在這個(gè)階段本身反映出來。要想將軟件工程的原理、技術(shù)和方法應(yīng)用于實(shí)踐,必須全面的學(xué)習(xí),各個(gè)階段聯(lián)系性比較緊密。
3 軟件工程課程教學(xué)中存在的問題
3.1 課程抽象,難于學(xué)習(xí)
由于軟件工程課程的理論原理比較抽象,不易掌握,從而導(dǎo)致學(xué)生在教與學(xué)的過程中極易產(chǎn)生枯燥、乏味的感覺和學(xué)不會(huì)、不想學(xué)的思想,教師會(huì)覺得該課程教起來相當(dāng)困難,要想達(dá)到較好的教學(xué)效果和培養(yǎng)學(xué)生較強(qiáng)的實(shí)踐能力的教學(xué)目標(biāo)十分困難。由于軟件工程課程不涉及具體軟件項(xiàng)目,不怎么涉及軟件算法,學(xué)生在學(xué)習(xí)過程中很難將抽象的理論與實(shí)際軟件項(xiàng)目聯(lián)系起來,被動(dòng)接受抽象理論的結(jié)果是學(xué)生學(xué)習(xí)該課程的興趣會(huì)逐漸消失,產(chǎn)生枯燥、乏味的感覺和學(xué)不會(huì)、不想學(xué)的思想。
3.2 大學(xué)教育時(shí)間短,課程安排沖突
由于兩年制的大學(xué)教育來說,不能像本科教學(xué)那樣安排合理的時(shí)間來進(jìn)行計(jì)算機(jī)相關(guān)知識(shí)的學(xué)習(xí),在課程安排上軟件工程課程要和其他的程序設(shè)計(jì)類課程一起開設(shè),這樣在講授軟件工程課程的時(shí)候就沒有辦法和其他課程相互印證,學(xué)生記憶不深刻。
3.3 理論和實(shí)踐相脫離
軟件工程這門學(xué)科的特點(diǎn)決定這門課程理論多于實(shí)踐,傳統(tǒng)的軟件工程課程在教學(xué)中雖然設(shè)置有實(shí)踐環(huán)節(jié),但受到時(shí)間以及教學(xué)環(huán)境的限制,很多無法真正完成個(gè)完整的項(xiàng)目,一般只是停留在文檔編寫的程度。學(xué)生由于缺乏實(shí)踐的驗(yàn)證,無法體會(huì)課堂上所學(xué)的理論知識(shí)有何實(shí)際意義及實(shí)用價(jià)值。同時(shí)缺乏實(shí)踐經(jīng)驗(yàn)使得學(xué)生動(dòng)于解決問題的能力比較差。針對(duì)于這一特點(diǎn),我們?cè)诮虒W(xué)安排上進(jìn)行了改革。就我們學(xué)院為例,我們將計(jì)算機(jī)專業(yè)必須要學(xué)習(xí)的,在實(shí)踐中立刻就要用到的課程進(jìn)行了排課,八周為一個(gè)周期,對(duì)學(xué)生進(jìn)行考核。教師采用坐班制,使學(xué)生隨時(shí)有問題,隨時(shí)能夠找到教師進(jìn)行解決,同時(shí)實(shí)驗(yàn)室全天開發(fā),給學(xué)生一個(gè)良好的實(shí)驗(yàn)環(huán)境,在每次寒暑假之前都組織學(xué)生進(jìn)行課程實(shí)訓(xùn),將軟件工程的理論融入到具體的項(xiàng)目開發(fā)中去,在項(xiàng)目結(jié)束后要求學(xué)生結(jié)合軟件工程所學(xué)理論給出項(xiàng)目的《軟件需求規(guī)格說明書》、《詳細(xì)設(shè)計(jì)書明書》、《用戶手冊(cè)》等多種軟件文檔,并就所做項(xiàng)目寫出心得體會(huì),總結(jié)經(jīng)驗(yàn),為下次實(shí)訓(xùn)做準(zhǔn)備。在反復(fù)的課程實(shí)訓(xùn)中體會(huì)軟件工程的原理、技術(shù)和方法,使學(xué)生對(duì)軟件工程抽象的概念理解的更深入。
3.4 考核方式滯后
傳統(tǒng)的軟件工程課程的考核方式,一般都是筆試加平時(shí)成績(jī)的方式,這種考核方式對(duì)于學(xué)生來說只要在學(xué)期末,對(duì)軟件工程的原理概念進(jìn)行記憶就能取得好成績(jī),而死記硬背的東西很容易忘記,不利于學(xué)生吸收。
4 改革軟件工程課程教學(xué)的措施
4.1 提高課堂趣味性
采取任務(wù)驅(qū)動(dòng)的學(xué)習(xí)方法,傳統(tǒng)的教學(xué)方法是先按教材進(jìn)行講解,把教材上的內(nèi)容一條一條的逐一介紹,學(xué)生聽起來空洞、枯燥、無味,離生活、學(xué)習(xí)相距甚遠(yuǎn)。本來是學(xué)生最喜歡的東西,卻讓學(xué)生越來越感到乏味。若是以學(xué)生為中心,在整個(gè)教學(xué)過程中由教師起組織者、指導(dǎo)者、幫助者和促進(jìn)者的作用,利用情境、協(xié)作、會(huì)話等學(xué)習(xí)環(huán)境充分發(fā)揮學(xué)生的主動(dòng)性、積極性和創(chuàng)新精神,最終達(dá)到使學(xué)生有效地實(shí)現(xiàn)對(duì)當(dāng)前所學(xué)知識(shí)的意義建構(gòu)的目的?!叭蝿?wù)驅(qū)動(dòng)”就是將所要學(xué)習(xí)的新知識(shí)隱含在一個(gè)或幾個(gè)任務(wù)之中,學(xué)生通過對(duì)所提的任務(wù)進(jìn)行分析、討論,明確它大體涉及到教材上的哪些知識(shí),并找出哪些是舊知識(shí),哪些是新知識(shí),在老師的指導(dǎo)、幫助下找出解決問題的方法,最后通過任務(wù)的完成而實(shí)現(xiàn)對(duì)所學(xué)知識(shí)的意義建構(gòu)。任務(wù)驅(qū)動(dòng)的教學(xué)方式,是在問題解決中學(xué)習(xí),教師針對(duì)所要學(xué)習(xí)的內(nèi)容設(shè)計(jì)出具有思考價(jià)值的、有意義的問題,首先讓學(xué)生去思考、去嘗試解決,在此過程中,教師提供一定的支持和引導(dǎo),組織學(xué)生討論、合作,但這都不應(yīng)妨礙學(xué)生的獨(dú)立思考,而應(yīng)配合、促進(jìn)他們的探索過程。
4.2 理論教學(xué)與實(shí)踐相結(jié)合
“軟件工程”這門課程,非常強(qiáng)調(diào)理論與實(shí)踐相結(jié)合。軟件工程實(shí)際上就是一門研究如何將完善的科學(xué)與工程原理,先進(jìn)高效的管理技術(shù)以及完整、規(guī)范的設(shè)計(jì)方法應(yīng)用于經(jīng)濟(jì)地開發(fā)既可靠,又能在實(shí)際計(jì)算機(jī)上有效運(yùn)行的軟件的一門工程學(xué)科??梢娨芎玫恼莆哲浖こ讨薪榻B的分析、設(shè)計(jì)、維護(hù)及管理等方法,就必須理論教學(xué)與實(shí)際應(yīng)用相結(jié)合。目前,我們的教學(xué)安排上主要采取的是課堂講授的方式,沒有安排實(shí)驗(yàn)教學(xué)環(huán)節(jié),從而影響了學(xué)生對(duì)理論知識(shí)的有效理解。所以在教學(xué)過程中,應(yīng)安排相應(yīng)的實(shí)驗(yàn)環(huán)節(jié),以便使學(xué)生能夠?qū)⒗碚撝R(shí)與實(shí)際應(yīng)用相結(jié)合。
4.3 教學(xué)的重點(diǎn)應(yīng)放在面向?qū)ο蠓椒▽W(xué)上
軟件往往不能真正滿足用戶需要等,而人們?cè)趯?shí)踐中逐漸創(chuàng)造出的軟件工程的一種新途徑—面向?qū)ο蠓椒▽W(xué),則提高了軟件系統(tǒng)的穩(wěn)定性、可修改性和可重用性,它一經(jīng)出現(xiàn),就日益受到人們的重視,近些年來已經(jīng)進(jìn)入實(shí)用階段,應(yīng)用得越來越廣泛,必將給軟件產(chǎn)業(yè)帶來新的飛躍。而我們?cè)谝郧暗慕虒W(xué)過程中對(duì)這一部分的介紹則比較表淺,對(duì)學(xué)生只要求了解,在課時(shí)安排上也相應(yīng)較少。這使得學(xué)生畢業(yè)進(jìn)入工作崗位,真正從事軟件開發(fā)工作后,面對(duì)用面向?qū)ο蠓椒▽W(xué)來控制整個(gè)軟件開發(fā)過程時(shí),就感到措手不及,從而認(rèn)為“軟件工程”這門課程學(xué)不至用,經(jīng)過反饋,就影響到在校生對(duì)“軟件工程”這門課的重視程度。
4.4 構(gòu)建科學(xué)合理的考核方式
在“軟件工程”課程的教學(xué)中,應(yīng)在開始階段即給學(xué)生布置具體的軟件開發(fā)任務(wù),隨著課程的深入,在教師的指導(dǎo)下,讓學(xué)生學(xué)會(huì)用所學(xué)的知識(shí)解決具體問題,這樣在做中學(xué),更能促進(jìn)學(xué)生對(duì)知識(shí)的掌握,考核方式上,我們學(xué)院也進(jìn)行了改革,考試成績(jī)有筆試+平時(shí)成績(jī)+階段課堂考試+課后作業(yè)的方式進(jìn)行,降低筆試成績(jī),使學(xué)生從大量記憶中脫離出來,注重學(xué)生的平時(shí)表現(xiàn),使學(xué)生逐步吸收,達(dá)到一個(gè)較好的效果。
5 結(jié)束語
軟件工程教學(xué)的目的是要培養(yǎng)學(xué)生學(xué)會(huì)采用工程學(xué)的概念、原理、技術(shù)和方法來開發(fā)、維護(hù)與管理軟件。在整個(gè)軟件開發(fā)的過程中,將會(huì)涉及到各種其他學(xué)科的知識(shí),學(xué)習(xí)軟件工程,它必須與其他學(xué)科相結(jié)合才能產(chǎn)生有價(jià)值的成果。必須具有良好的程序設(shè)計(jì)風(fēng)格,才能使開發(fā)出來的軟件程序結(jié)構(gòu)清晰,可維護(hù)性強(qiáng)。對(duì)數(shù)據(jù)庫(kù)、計(jì)算機(jī)語言、管理學(xué)等學(xué)科都有較高的要求,可見,在軟件工程的學(xué)習(xí)中,必須注意與其他多種學(xué)科結(jié)合,綜合起來學(xué)習(xí)。
參考文獻(xiàn):
[1] 張海藩.軟件工程導(dǎo)論[M].第三版.北京:清華大學(xué)出版社,2001.
[2] 孫涌,田茵,等.現(xiàn)代軟件工程[M].北京:希望電子出版社,2002.
[3] 陸惠恩.軟件工程基礎(chǔ)[M].北京:人民郵電出版社,2007.