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