軟件工程學(xué)術(shù)論文(2)
軟件工程學(xué)術(shù)論文篇二
軟件工程綜合實訓(xùn)軟件過程初探
摘要:軟件工程綜合實訓(xùn)應(yīng)采用迭代的軟件開發(fā)過程。基于實訓(xùn)課程目的的分析,提出一個為期20周、分6次迭代的實訓(xùn)模型。學(xué)生以小組為單位開展實踐,分別任組長、開發(fā)經(jīng)理、計劃經(jīng)理、測試經(jīng)理及技術(shù)支持經(jīng)理等角色,每完成兩次迭代交換角色一次。實訓(xùn)中開展業(yè)務(wù)分析、需求、分析設(shè)計、實現(xiàn)、測試、部署、團隊管理、計劃管理、配置管理及環(huán)境支撐等領(lǐng)域的約30種活動,考核分迭代的考核和角色考核兩種。
關(guān)鍵詞:軟件工程;綜合實踐;軟件過程;迭代開發(fā)
為了提高軟件工程人才培養(yǎng)的水平,增強學(xué)生的實踐能力,文獻[1]基于建構(gòu)主義認知學(xué)說提出了一種創(chuàng)新的人才培養(yǎng)模式。該培養(yǎng)模式的特點是在第6—7學(xué)期引入長周期的綜合實訓(xùn)。為便于實施,該綜合實訓(xùn)可按學(xué)期分成兩段。其中第6學(xué)期的實訓(xùn)為期20周,如何開展全面的軟件工程過程實踐,是本文要探討的對象。此實訓(xùn)將部分原在課堂講授的理論課貫穿在實訓(xùn)中講解,并要求學(xué)生以小組為單位完成軟件開發(fā)項目,從而理解和掌握軟件開發(fā)過程與技術(shù)。為有效開展此實訓(xùn),本文依據(jù)現(xiàn)有軟件過程理論和經(jīng)驗,對實訓(xùn)中的軟件過程進行探討。
1概念與研究的必要性
軟件開發(fā)過程是指在工業(yè)化環(huán)境(如軟件公司、大型軟件開發(fā)團隊)開發(fā)軟件的有先后順序的一系列活動。它是將各種軟件技術(shù)組織在一起的粘合劑,是合理高效開發(fā)軟件產(chǎn)品的保證[2]。對軟件過程的描述,往往包括過程模型、活動、角色、制品等方面。
軟件工程綜合實訓(xùn)課程的目的是為了讓學(xué)生熟悉軟件開發(fā)過程,掌握軟件開發(fā)技術(shù),增強實際動手能力。它與實際軟件開發(fā)有以下幾點不同:
1) 目標不同。前者以培養(yǎng)學(xué)生為目標,后者以生產(chǎn)軟件為目標。
2) 實踐主體不同。前者為學(xué)生,后者為工作者。
3) 環(huán)境不同。前者在學(xué)校的模擬環(huán)境進行,后者處于具體的軟件開發(fā)環(huán)境。
這意味著實訓(xùn)教學(xué)中應(yīng)該采用接近實際的軟件開發(fā)過程,但又不能完全照搬實際過程。這是我們必須探討綜合實訓(xùn)軟件開發(fā)過程的原因。以下從軟件開發(fā)過程模型、過程角色、主要活動及對學(xué)生的考核等幾方面對軟件工程綜合實訓(xùn)的軟件開發(fā)過程進行討論。
2綜合實訓(xùn)的軟件過程模型
歷史上,出現(xiàn)過多種軟件過程模型,但大致可分為線性模型和迭代模型兩類。線性模型也稱瀑布模型,已被實踐證實不能適應(yīng)需求變化的場景。迭代模型認為軟件開發(fā)是一個反復(fù)的過程,比較符合軟件復(fù)雜、易變的本質(zhì),是當(dāng)今軟件開發(fā)的主流思想。
在考慮實訓(xùn)教學(xué)軟件過程模型的選取時,應(yīng)以簡單易行、便于軟件技術(shù)學(xué)習(xí)、便于軟件過程理解為出發(fā)點。單從簡單易行的角度,采用瀑布模型比較有吸引力。瀑布模型的步驟和章法清晰,教學(xué)組織方便。但是,如果使用瀑布模型,對迭代過程的介紹只能停留在口頭上,學(xué)生無法從實踐中領(lǐng)會這一重要的過程思想。瀑布模型是一次性完成需求描述,然后做全面
設(shè)計。這不利于由淺入深、循序漸進地掌握軟件架構(gòu)、設(shè)計和編碼方面的技術(shù)。如果采用迭代式模型,雖會令實訓(xùn)的組織和管理變得復(fù)雜,但既可以領(lǐng)會瀑布模型的章法,也可以克服瀑布模型的弊端。對于本文所針對的長達一個學(xué)期的綜合實訓(xùn),其教學(xué)目標是多維和綜合的,既要在過程中傳授顯性知識,也要通過過程組織和實踐指導(dǎo)傳遞隱性知識。如采用瀑布模型,會將開發(fā)過程理想化,而使很多隱性知識和實踐經(jīng)驗難以傳播。因此長周期的綜合實訓(xùn)采用迭代式過程模型更合理。
按照有關(guān)迭代開發(fā)經(jīng)驗[3],對于小型項目,以3周為一次迭代較合適。我們決定將20周的實訓(xùn)分為開始1周、結(jié)束1周、中間6次迭代18周。各次迭代的目標如表1所示。
表中,迭代1的任務(wù)是發(fā)掘和初步表述系統(tǒng)的主要需求,并設(shè)計系統(tǒng)原型;迭代2要完成系統(tǒng)的主要功能,約占全部功能的30%~40%;迭代3完成系統(tǒng)的全部功能;迭代4對系統(tǒng)架構(gòu)進行優(yōu)化,增加業(yè)務(wù)邏輯層;迭代5進一步優(yōu)化系統(tǒng)架構(gòu),增加數(shù)據(jù)讀寫層;跌代6使用現(xiàn)有框架對系統(tǒng)進行重構(gòu)。
在實際的軟件開發(fā)過程中,早期迭代要著重于影響架構(gòu)的功能和性能需求的實現(xiàn),從而一開始就為系統(tǒng)選擇合理的架構(gòu)。但在實訓(xùn)教學(xué)中,按由淺入深的教學(xué)規(guī)律,在學(xué)生具備一定的開發(fā)經(jīng)驗后引入架構(gòu)設(shè)計知識。因此,前幾次迭代較少涉及架構(gòu)設(shè)計的細節(jié),所完成的軟件在架構(gòu)方面是不成熟的。在后幾次迭代中,通過對代碼的重構(gòu)逐漸完成軟件架構(gòu)的優(yōu)化,從而讓學(xué)生牢牢樹立架構(gòu)設(shè)計的理念。這是實訓(xùn)軟件過程與實際軟件過程的區(qū)別。
上述各次迭代的目標,也是系統(tǒng)開發(fā)的里程碑。教師檢查各次迭代提交制品的同時,也考核了學(xué)生團隊的成績。
3綜合實訓(xùn)過程中的角色
基于文獻[4]及文獻[5]的思想,軟件工程綜合實訓(xùn)學(xué)生團隊?wèi)?yīng)設(shè)置對等角色。即每個小組成員擔(dān)任一種角色,負責(zé)一個方面的工作,同時又是其他成員所負責(zé)工作的參與者。這既是實際開發(fā)團隊的做法,也最適合學(xué)生的學(xué)習(xí)。
考慮到項目規(guī)模較小,實訓(xùn)時間較長,一個小組人數(shù)不宜過多。以5人一組,分別扮演組長、開發(fā)經(jīng)理、計劃經(jīng)理、測試經(jīng)理、技術(shù)支持經(jīng)理等角色,各角色職責(zé)主要為[4]:
1) 組長:負責(zé)小組建設(shè),讓小組成員有共同的目標和項目愿景,激勵士氣,維持紀律,安排任務(wù),主持每周小組例會、成員互評等。
2) 開發(fā)經(jīng)理:主持小組開發(fā)工作,包括需求、分析與設(shè)計、實現(xiàn)等過程。
3) 計劃經(jīng)理:負責(zé)帶領(lǐng)小組制訂項目計劃和迭代計劃,督促各成員按要求完成工作日志,制訂項目周計劃,整理項目周報,對計劃進行跟蹤,在例會或計劃會議上通報項目進度。
4) 測試經(jīng)理:負責(zé)測試計劃的制訂,編寫測試用例,組織測試實施及管理,組織每日集成測試。
5) 技術(shù)支持經(jīng)理:組織執(zhí)行配置管理、變更控制、數(shù)據(jù)庫管理及風(fēng)險管理,培訓(xùn)本組成員正確使用工具軟件,督促每日代碼簽入、簽出。
上述角色職責(zé)涉及的各種活動,詳見第4節(jié)說明。指導(dǎo)教師在實訓(xùn)中的角色是代表客戶方提出對系統(tǒng)的要求,同時也是學(xué)生開發(fā)活動的指導(dǎo)者和監(jiān)督者。
在實際的軟件開發(fā)過程中,團隊成員的角色在一個項目中是固定的。但在實訓(xùn)過程中,為了讓學(xué)生得到更全面的訓(xùn)練,可規(guī)定每兩次迭代交換角色一次。這樣在整個實訓(xùn)中,每人都可以擔(dān)任三種不同的角色。這是實訓(xùn)過程不同于實際過程的地方。
4綜合實訓(xùn)過程的主要活動及制品
依據(jù)文獻[4]和文獻[6],將學(xué)生在綜合實訓(xùn)中的活動領(lǐng)域分為兩大類,一類是核心開發(fā)域,包括業(yè)務(wù)分析、需求、分析與設(shè)計、實現(xiàn)、測試、部署等;一類是核心支持域,包括團隊管理、計劃管理、配置管理、環(huán)境支撐等。各活動域的活動種類、制品及負責(zé)角色如表2所示,共有約30種活動。
上述活動涉及很多學(xué)生尚不了解的知識。對于其中適合講授的顯性知識,由專題主講老師在過程中集中講授;對于可以通過實踐過程習(xí)得的隱性知識,通過實訓(xùn)指導(dǎo)書對有關(guān)活動的規(guī)范和引導(dǎo),讓學(xué)生在活
動中領(lǐng)悟。需要集中講授的知識可以分成以下幾個模塊:
1) 項目輔導(dǎo)。介紹有關(guān)小組建設(shè)、小組溝通、工作理念、計劃管理等方面的知識,對開發(fā)過程的紀
律、工作程序、會議等作具體的指導(dǎo)。
2) 軟件開發(fā)過程。主要介紹軟件開發(fā)統(tǒng)一過程(RUP),包括迭代開發(fā)方法,各種開發(fā)活動、角色及制品的含義,配置管理及風(fēng)險管理等。
3) 數(shù)據(jù)庫管理。結(jié)合項目和實訓(xùn)環(huán)境指導(dǎo)學(xué)生設(shè)計和管理大型關(guān)系型數(shù)據(jù)庫。
4) 軟件測試。結(jié)合項目介紹各種測試活動的要求、內(nèi)容和組織實施辦法。
5) 系統(tǒng)分析與設(shè)計。介紹面向?qū)ο蟮目梢暬7椒ā④浖軜?gòu)設(shè)計、模式應(yīng)用等方面的知識。
6) 程序設(shè)計技術(shù)。介紹完成項目所需要的程序設(shè)計技術(shù)。包括Web應(yīng)用開發(fā)、多層體系架構(gòu)的實現(xiàn)、測試驅(qū)動的開發(fā)、應(yīng)用程序框架設(shè)計與應(yīng)用等內(nèi)容。
在開展項目過程中,講授也是重要的環(huán)節(jié),這也是本實訓(xùn)過程與實際過程的不同之處。
5考核方式
作為一項教學(xué)活動,必須對學(xué)生學(xué)習(xí)情況進行考核并給出成績。由于該實訓(xùn)長達一學(xué)期,理論課學(xué)時較多,所對應(yīng)的學(xué)分也較多。如果采用一次性考核,顯然操作難度很大,也不利于在過程中發(fā)現(xiàn)問題,激勵學(xué)生。因此,本實訓(xùn)最適合分階段考核,即對每次迭代進行考核,成績由三部分組成:一是本次迭代過程有關(guān)理論知識掌握,占40%,采用筆試方式考核;二是工作成果,占30%,以測試迭代產(chǎn)生的結(jié)果為依據(jù);三是工作表現(xiàn),占30%,通過統(tǒng)計考勤、學(xué)生互評及老師評價得到。每兩次迭代完成,學(xué)生交換角色前,要求每位學(xué)生提交所擔(dān)任角色工作的總結(jié)報告,作為單獨的角色考核。由于角色是任選的,此考核學(xué)分可作為選修學(xué)分記入成績表。
6結(jié)語
由于實訓(xùn)與實際軟件開發(fā)不同,實訓(xùn)軟件過程不能照搬實際開發(fā)過程。為了與當(dāng)代流行的軟件開發(fā)過程一致,也為了能循序漸進地教學(xué),在實訓(xùn)中選擇迭代式開發(fā)模型。項目小組的成員依次承擔(dān)多種角色,并產(chǎn)生相應(yīng)的制品。實訓(xùn)的考核以迭代為單位進行。按照這樣的過程開展本文所述約30項實訓(xùn)活動,必將提高學(xué)生對軟件工程知識的認識和實際的動手能力。
參考文獻:
[1] 鄭大鵬,林國璋,張克軍. 一種創(chuàng)新的獨立學(xué)院軟件專業(yè)人才培養(yǎng)模式[J]. 計算機教育,2010(8):1-3.
[2] Roger S. Pressman. 軟件工程—實踐者的研究方法[M]. 4版. 北京:機械工業(yè)出版社,1999:22-49.
[3] Craig Larman. UML和模式應(yīng)用[M]. 3版. 北京:機械工業(yè)出版社,2008:13-20.
[4] Watts S. Humphrey. 小組軟件開發(fā)過程[M]. 北京:人民郵電出版社,2000:163-225.
[5] 微軟公司. MSF Team Model v.3.1[EB/OL]. [2010-11-06].
[6] Ivar Jacobson,Grady Booch,James Rumbaugh. 統(tǒng)一軟件開發(fā)過程[M]. 北京:機械工業(yè)出版社,2002:3-11.
看了“軟件工程學(xué)術(shù)論文”的人還看: