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