賁可榮 何智勇
摘要:“軟件工程”是計算機科學(xué)與技術(shù)專業(yè)本科必修課程,對培養(yǎng)軍隊信息化建設(shè)的人才有重要作用。本文介紹我們在“軟件工程”課程教學(xué)中的做法及體會,包括采用英文原版教材、實行雙語教學(xué)、通過課程大作業(yè)對所學(xué)理論和技術(shù)進行綜合實踐、貫穿課程的案例教學(xué)等方面。通過這些方法,強化了學(xué)生的實踐應(yīng)用能力,提高了軟件工程師的綜合素質(zhì)。
關(guān)鍵詞:軟件工程;雙語教學(xué);案例教學(xué)
中圖分類號:G642文獻標(biāo)識碼:A
1概述
軟件是高新武器裝備的靈魂,軟件是構(gòu)筑信息化裝備體系的關(guān)鍵,軟件可有效提升武器裝備的整體作戰(zhàn)效能,軟件是信息戰(zhàn)中攻防對抗裝備發(fā)展的焦點。軟件在軍隊信息化建設(shè)中起著十分重要的作用,軍隊信息化建設(shè)對軟件質(zhì)量提出了更高的要求。軟件工程方法、技術(shù)、工具為軟件開發(fā)提供了工程指南。計算機專業(yè)的本科生將有機會參與各類軍用軟件系統(tǒng)的設(shè)計、開發(fā)、測試,甚至過程管理工作,學(xué)習(xí)“軟件工程”課程可以培養(yǎng)他們的能力和素質(zhì)。
“軟件工程”是計算機科學(xué)與技術(shù)專業(yè)本科學(xué)員的專業(yè)必修課,是實踐性很強的綜合性課程。本課程的任務(wù)是系統(tǒng)地介紹軟件工程的過程、方法和工具,并且通過較大規(guī)模的實習(xí)使學(xué)員初步掌握軟件計劃、開發(fā)、測試和維護的工程化方法,為學(xué)員將來從事應(yīng)用軟件的開發(fā)打下基礎(chǔ)。
通過本課程的學(xué)習(xí),對軟件產(chǎn)品和軟件過程有全面的理解和認識,掌握軟件質(zhì)量保證技術(shù)的基本理論、基本方法,掌握軟件生命周期各階段技術(shù)特征,了解計算機輔助軟件工程工具,了解軟件可靠性概念,掌握測試和維護的基本方法。在保證教學(xué)效果的前提下,開展雙語教學(xué),以提高學(xué)員查閱外文資料和科技外語交流的能力。
2雙語教學(xué)
隨著英語水平的普遍提高和英語的需求增加,在教學(xué)主管部門的鼓勵下,我們于2002年起在“軟件工程”教學(xué)中引入了雙語教學(xué)模式。
“雙語教學(xué)”可采取如下形式:浸入型雙語教學(xué)、保持型雙語教學(xué)和過渡型雙語教學(xué)。限于語言環(huán)境并不是中英并重的,所以我們采用保持型雙語教學(xué),即學(xué)員剛進入學(xué)校時使用漢語,然后逐漸地使用英語進行部分學(xué)科的教學(xué),其他學(xué)科仍使用漢語教學(xué)。我們采用英文原版教材,以講授專業(yè)知識為目標(biāo),采用雙語為手段,其特點是專業(yè)知識與英語訓(xùn)練并重。
因為Pressman的原版教材在國內(nèi)有影印版,同時該書是國際上有影響的教材,因此,我們采用Pressman的《Software Engineering——A Practitioner's Approach》(第4版和第6版)。同時,該書新版及時反映了軟件工程的技術(shù)進步。我們系軟件工程為40學(xué)時(一學(xué)期完成),教學(xué)形式包括:講授+討論+作業(yè)+課程大作業(yè)+考試。
對教師的雙語要求:對內(nèi)容非常熟悉;預(yù)告內(nèi)容;教材和多媒體課件用英語,講課中英文并重,要求用正確流利的英語進行知識的講解,但不排除漢語,避免由于語言滯后造成學(xué)員的思維障礙;考試出題用英語。
對學(xué)員的雙語要求:預(yù)習(xí);課上發(fā)言:英語+適當(dāng)?shù)闹形慕忉?作業(yè):鼓勵用英語;考試:開卷,允許帶字典和教材。
幾年的實踐,雙語教學(xué)對學(xué)員的學(xué)習(xí)起到了如下促進作用。
(1) 加強了外語語言能力的發(fā)展
用專業(yè)教學(xué)語言來促使外語語言能力發(fā)展,避免外語教學(xué)與專業(yè)教學(xué)脫節(jié)。由于學(xué)習(xí)的需要,學(xué)員自然會產(chǎn)生努力學(xué)習(xí)外語的動機和興趣,這種動機和興趣比在單純的語言課程上容易產(chǎn)生并更加持久。雙語教學(xué)使學(xué)員通過對教學(xué)語言的感受來達到提高外語水平的目標(biāo),學(xué)員在努力弄清教師在課堂上講授的意思的同時,外語聽力和外文知識將在有意與無意之中得到強化。
(2) 有效解決長期存在的學(xué)與用脫節(jié)的問題
在雙語教學(xué)中采用國外原版教材其突出的特點是實用性強,而這一特點恰恰是多年來中國軟件工程教材中的薄弱環(huán)節(jié)。國外教材中還大量配以各種案例,通過對案例的分析,能提高學(xué)員分析問題、解決問題的能力,使學(xué)員能把學(xué)到的東西應(yīng)用到實際工作中去,并且推動了基于案例教學(xué)和課程大作業(yè)的開展。
(3)“原汁原味”,促進教學(xué)的規(guī)范化和國際化
我們的軍事人才培養(yǎng)是在國際化的大背景下進行的。雙語教學(xué)使軟件工程課程與國際接軌,能夠反映最先進的軟件工程方法、技術(shù)和工具,隨著進一步規(guī)范化,相應(yīng)的軟件課程體系和配套教學(xué)資料將與國內(nèi)外比較知名的學(xué)?;疽恢?。而軟件工程課程教學(xué)的規(guī)范化,對于計算機專業(yè)其他課程的教學(xué)將起十分重要的示范、帶動作用。
3案例教學(xué)
軟件教學(xué)的實踐表明,如果沒有親身體驗,學(xué)員很難相信軟件工程技術(shù)的好處。讓學(xué)員理解和掌握軟件工程的最有效的方法是讓他們完成為時一學(xué)期的軟件項目的開發(fā)。我們開設(shè)的軟件工程課程是一門以面向?qū)ο蟮能浖_發(fā)為重點、集實用性與即用性于一體的課程。
我們強調(diào)“實踐”。一般來講,實踐就是軟件工程師日常使用概念、原則、方法和開發(fā)工具的集合,實踐使得項目經(jīng)理可以管理軟件項目,保證軟件工程師開發(fā)計算機程序,實踐利用由必要技術(shù)和管理組成的軟件過程模型,保證開發(fā)工作順利開展,實踐將使一些雜亂的容易被忽視的方法轉(zhuǎn)化為更具組織性、更高效并且更容易獲得項目成功的重要東西。
教授一門基于項目的軟件工程課程最重要、也最困難的是如何選擇合適的項目。因為所選項目必須足夠復(fù)雜,以便讓學(xué)員以3~5人為單位組成一個開發(fā)小組,同時又必須能在15周內(nèi)完成。比達到目標(biāo)更具挑戰(zhàn)性的是所選的項目必須引起學(xué)員的興趣,讓其有內(nèi)在的動力。我們提供一種可以在15周學(xué)習(xí)時間內(nèi)完成一個大軟件項目的專門開發(fā)方法。我們還提供了兩個連續(xù)的案例分析,用作為時一學(xué)期的項目開發(fā)的樣板。案例分析中內(nèi)含有制品的樣本,舉例說明了學(xué)員在其項目的生命周期中所要交付的資料的類型。
課程案例包括以下內(nèi)容。
(1) 工資支付系統(tǒng):管理不同種類的員工,如小時工、月薪員工等,處理不同的工資計算方法,如按工作時間、按銷售訂單提成等,員工可以提交時間卡、銷售訂單等工作記錄,系統(tǒng)需要根據(jù)工作記錄和員工類別,按照工資支付周期,以合適的形式(轉(zhuǎn)賬、支票)正確發(fā)放工資。
(2) 鼠標(biāo)點擊游戲:鍛煉用戶對鼠標(biāo)的使用,支持雙人對戰(zhàn)和人機對戰(zhàn),雙方各分配一種顏色(紅或藍),紅藍小球不斷出現(xiàn)在二維方格中,用戶可以通過點擊鼠標(biāo),盡量消去己方的小球,如果出現(xiàn)同顏色的相鄰的小球,則該用戶失敗,并給出雙方的分數(shù)。
課程大作業(yè)是對所學(xué)理論和技術(shù)的綜合實踐,是提高實踐能力和積累工程經(jīng)驗所必須具備的重要教學(xué)實踐環(huán)節(jié)。在我們教學(xué)中,推薦如下課程大作業(yè)選題:網(wǎng)絡(luò)環(huán)境下圖書館管理系統(tǒng),模擬計算器,俄羅斯方塊游戲,酒店管理系統(tǒng),高校醫(yī)院管理信息系統(tǒng)。有興趣的同學(xué)可以自由選題,必須經(jīng)老師認可。
課程大作業(yè)的目標(biāo)是使用整個教育計劃中獲得的知識,包括需求、設(shè)計、實現(xiàn)和質(zhì)量保證等,進行典型軟件系統(tǒng)的開發(fā)。學(xué)員可以采用任何合適的過程模型,注意質(zhì)量問題,并自己管理項目。
學(xué)員應(yīng)在開發(fā)一個軟件系統(tǒng)中實施一次或多次迭代,并生成過程模型要求的各種制品。這些制品包括項目計劃(可能被定期更新,并包含成本預(yù)算、風(fēng)險分析、工作到任務(wù)的劃分等)、需求(包括用例)、體系結(jié)構(gòu)和設(shè)計文檔、測試計劃、源代碼和可安裝的系統(tǒng)。
學(xué)員在大作業(yè)中分組工作,每組成員至少2人,最好是3~4人;小組成員的選擇考慮到理論能力和實踐能力的平衡。在大作業(yè)實施過程中,定期報告各小組的進展。每個小組虛擬一個“客戶”,項目的目的是解決客戶的問題,因此客戶應(yīng)幫助教師來評價最終工作。
通過課程大作業(yè),使軟件工程教學(xué)達到理論與實踐相結(jié)合、知識與能力相結(jié)合,既培養(yǎng)個體的程序設(shè)計與實現(xiàn)能力,又強化了學(xué)員對團隊協(xié)作的工程規(guī)范和專業(yè)知識的綜合運用。
我們認為,學(xué)員應(yīng)該在一個或多個領(lǐng)域擁有專長。對于每一個應(yīng)用領(lǐng)域,應(yīng)該在深入學(xué)習(xí)特定系統(tǒng)設(shè)計的同時,廣泛涉獵有關(guān)的領(lǐng)域知識,并且學(xué)習(xí)這些領(lǐng)域中典型產(chǎn)品的特性及其對系統(tǒng)設(shè)計與開發(fā)的影響。我們推薦如下應(yīng)用領(lǐng)域:以網(wǎng)絡(luò)為中心的系統(tǒng);信息系統(tǒng)與數(shù)據(jù)處理;容錯與可存活系統(tǒng);高安全性系統(tǒng);安全攸關(guān)系統(tǒng);嵌入式與實時系統(tǒng);艦載指控系統(tǒng);多媒體和仿真系統(tǒng);小型移動平臺系統(tǒng)。
市面上軟件工程方面的教材大多重理論輕實踐,那些基于項目的教材并沒有把重點放在面向?qū)ο蟮姆缎椭衼?。我們在這方面做了些嘗試,并按該思路撰寫了一本《軟件工程——基于項目的面向?qū)ο笱芯糠椒ā贰?/p>
4綜合素質(zhì)培養(yǎng)
軟件工程是一門交叉性的工程學(xué)科,它建立在計算機科學(xué)和數(shù)學(xué)的基礎(chǔ)之上,但已經(jīng)超出了以這些技術(shù)為基礎(chǔ)的學(xué)科范疇,它將計算機科學(xué)、數(shù)學(xué)、工程學(xué)和管理學(xué)等基本原理應(yīng)用于軟件的開發(fā)與維護中。軟件工程的目的是以系統(tǒng)的、可控的、有效的方式創(chuàng)建高質(zhì)量軟件。軟件工程教育兼屬科學(xué)教育與工程教育范疇,交叉應(yīng)用性和工程實踐性是軟件工程的學(xué)科特性,因此,其重點在于軟件的分析與評價、規(guī)格說明、設(shè)計和演化,另外還涉及管理和質(zhì)量、創(chuàng)新、標(biāo)準(zhǔn)、個人技能、團隊協(xié)作和專業(yè)實踐等。
畢業(yè)學(xué)員有機會參與各種信息系統(tǒng)(包括指揮、控制、通信、情報、偵察、導(dǎo)航、電子戰(zhàn)等系統(tǒng))的設(shè)計和開發(fā),因此,我們注重學(xué)員如下軟件工程素質(zhì)的培養(yǎng):基礎(chǔ)知識和技能;團隊工作的能力;分析與解決問題的能力;談判與溝通的能力;適應(yīng)發(fā)展的能力;認知能力和技能;實踐能力和技能,包括判斷能力、創(chuàng)新能力、溝通能力、團隊協(xié)作、專業(yè)發(fā)展的其他技能。達到科學(xué)教育、工程教育與創(chuàng)新實踐緊密結(jié)合,在夯實數(shù)理基礎(chǔ)和工程科學(xué)的同時,加強工程教育,強化創(chuàng)新實踐教學(xué),培養(yǎng)綜合能力。
不同的項目會鍛煉知識體系中不同知識領(lǐng)域的技巧。這些知識單元包括:構(gòu)造技術(shù),團隊動力/心理學(xué),交流溝通技巧,專業(yè)技能,模型類型,需求獲取,需求規(guī)范和文檔,需求確認,軟件設(shè)計策略,體系結(jié)構(gòu)設(shè)計,人機界面設(shè)計,詳細設(shè)計,設(shè)計符號和支持工具,設(shè)計評估,評審,測試,項目規(guī)劃,項目人員和組織,軟件配置管理。
我們的培養(yǎng)目標(biāo)不僅是具有創(chuàng)新意識和創(chuàng)新能力的軟件人才和軟件工程師,還要通過課程培養(yǎng)學(xué)員遵守職業(yè)道德規(guī)范。
5小結(jié)
隨著部隊信息化建設(shè)的不斷深化,在軟件工程的學(xué)習(xí)上提出了更高的要求,只有具備了軟件工程的基本知識,并且與具體的專業(yè)實踐結(jié)合起來,才能使部隊的信息化建設(shè)健康、平穩(wěn)、有序和高效的發(fā)展,真正達到提高部隊?wèi)?zhàn)斗力的目的。
通過在軟件工程課程中采取雙語教學(xué)、案例教學(xué)等手段,顯著提高了計算機工程專業(yè)本科學(xué)員的綜合素質(zhì),對軟件工程技術(shù)和方法的實踐能力得到了加強,促進了部隊信息化建設(shè)的高質(zhì)量發(fā)展。
參考文獻:
[1] Roger S.Pressman. Software Engineering——A Practitioner's Approach(Sixth Edition)[J]. U.S. NJ: McGraw-Hill,2005.
[2] Evelyn Stiller,Cathie LeBlanc. 基于項目的軟件工程——面向?qū)ο笱芯糠椒╗M]. 賁可榮,張秀山,譯. 北京:機械工業(yè)出版社,2002.
[3] Stacy J.Prowell,Carmen J.Trammell,Richard C.Linger,et al. 凈室軟件工程——技術(shù)與過程[M]. 賁可榮,張志祥,張秀山,譯. 北京:電子工業(yè)出版社,2001.
[4] 賁可榮,何智勇. 軟件工程——基于項目的面向?qū)ο笱芯糠椒╗M]. 北京:機械工業(yè)出版社,2009.
[5] 楊芙清. 軟件工程技術(shù)發(fā)展思索[J]. 軟件學(xué)報,2005,16(1):1-7.
[6] Oscar Dieste,Natalia Juristo,Ana M Moreno. How higher-education systems influence software engineering degree programs[J]. IEEE Software, 2004,21(4):78-85.
[7] 晏立.從社會需求的角度探索軟件工程教育[J]. 計算機教育,2008(22):141-142.
Bilingual and Case-Based Education in “Software Engineering”
BEN Ke-rong, HE Zhi-yong
(Naval University of Engineering Department of Computer Engineering, Wuhan 430033, China)
Abstract: “Software Engineering” is the Computer Science and Technology undergraduate curriculum, playing an important role in training persons for Information construction of military. Practice and understanding of teaching Software Engineering lessons are introduced in this paper, including Bilingual Education, End of Course Assignment, ability and quality training, and Case-Based Education. Through these methods, the ability of practice is strengthened, and the overall quality is improved as a software engineer.
Key words: software engineering; bilingual education; case-based education