摘要:本文論述了軟件過程改進(jìn)課程開設(shè)的必然性和課程的總體安排,總結(jié)了教學(xué)過程中的體會(huì),并在教材選擇方面提出了自己的觀點(diǎn)。
關(guān)鍵詞:軟件過程改進(jìn);教學(xué)模式;教學(xué)改革
中圖分類號(hào):G642
文獻(xiàn)標(biāo)識(shí)碼:B
文章編號(hào):1672-5913(2008)06-0041-03
1軟件過程改進(jìn)體系簡(jiǎn)介
為了使學(xué)生了解、掌握軟件過程改進(jìn)的相關(guān)問題,尤其是CMM、PSP和TSP的核心問題與實(shí)際運(yùn)用方法,使學(xué)生成為軟件行業(yè)的合格從業(yè)人員,我校為計(jì)算機(jī)科學(xué)與技術(shù)專業(yè)軟件工程方向的學(xué)生開設(shè)了“軟件過程改進(jìn)”這門課。軟件過程改進(jìn)強(qiáng)調(diào)軟件開發(fā)過程的規(guī)范化、標(biāo)準(zhǔn)化、可視化、文檔化,進(jìn)而軟件過程的高效化。軟件過程改進(jìn)的整體框架主要包含以下四方面的內(nèi)容。
(1) 軟件過程改進(jìn)架構(gòu):為支持過程必須具有兩種類型的架構(gòu),分別是組織及管理方面的架構(gòu)和技術(shù)方面的架構(gòu)。
(2) 軟件過程改進(jìn)規(guī)劃圖:它指定一個(gè)所采用的軟件過程模型,并且規(guī)劃出實(shí)現(xiàn)高效軟件過程的行動(dòng)步驟。
(3) 軟件過程評(píng)估方法:它指出對(duì)組織當(dāng)前軟件過程、活動(dòng)以及架構(gòu)進(jìn)行評(píng)估所采用的方法及技術(shù)。
(4) 軟件過程改進(jìn)計(jì)劃:為進(jìn)行軟件過程改進(jìn),根據(jù)評(píng)估所發(fā)現(xiàn)的問題,有針對(duì)性地制定出相應(yīng)的改進(jìn)方案。這四部分的相互關(guān)系如圖1所示。
圖1 軟件過程改進(jìn)的框架
按照軟件過程改進(jìn)的實(shí)施范圍的不同軟件過程改進(jìn)又分為個(gè)人軟件過程改進(jìn)(PSP)、團(tuán)隊(duì)軟件過程改進(jìn)(TSP)和組織軟件過程改進(jìn),組織軟件過程改進(jìn)的代表為CMM。三者之間的關(guān)系如圖2所示。
圖2 PSP、TSP和CMM之間的關(guān)系
2“軟件過程改進(jìn)”課程的教學(xué)模式
2.1課程的總體安排
按照軟件過程改進(jìn)的體系框架,結(jié)合計(jì)算機(jī)科學(xué)與技術(shù)專業(yè)特點(diǎn)和培養(yǎng)計(jì)劃的總體安排,該課程設(shè)為計(jì)算機(jī)科學(xué)與技術(shù)專業(yè)軟件工程方向的專業(yè)課,課程性質(zhì)定為必修,總學(xué)時(shí)48,其中理論學(xué)時(shí)32,實(shí)驗(yàn)環(huán)節(jié)學(xué)時(shí)16。通過本課程的學(xué)習(xí)使學(xué)生了解軟件過程改進(jìn)的必要性和可行性,學(xué)生應(yīng)掌握軟件過程改進(jìn)的相關(guān)概念、原理和方法,并能在軟件開發(fā)過程中運(yùn)用軟件過程改進(jìn)的方法,尤其是個(gè)人軟件過程改進(jìn)方法,以改善和提高軟件的質(zhì)量,同時(shí)提高學(xué)生開發(fā)高質(zhì)量軟件的能力和從業(yè)素質(zhì)。
2.2教材的準(zhǔn)備
由于軟件過程改進(jìn)的提出與形成也就是十年的時(shí)間,而把它作為課程在大學(xué)中進(jìn)行講授的時(shí)間就更晚了,在國(guó)內(nèi)大學(xué)的本科生中開設(shè)該課程也就是近幾年。目前國(guó)內(nèi)出版關(guān)于軟件過程改進(jìn)尤其是介紹CMM的書較多,但是可作為教材的卻較少。原因在于這些書有些是從培訓(xùn)的角度介紹軟件過程改進(jìn)的相關(guān)內(nèi)容;有些就是專門介紹CMM,相當(dāng)于CMM的手冊(cè);有些比較泛泛地介紹軟件過程改進(jìn)的相關(guān)理論;有些專門針對(duì)個(gè)人軟件過程或團(tuán)隊(duì)軟件過程進(jìn)行介紹等等。
按照教學(xué)大綱的要求,我們選擇了幾本典型相關(guān)書籍,把所需要的相關(guān)內(nèi)容進(jìn)行了改造和融合,再參考網(wǎng)上的資料,編寫了一本內(nèi)部講義作為教材。
2.3理論課的安排與實(shí)施
按照教學(xué)大綱的要求和對(duì)理論課學(xué)時(shí)的規(guī)定,我院對(duì)理論課教學(xué)內(nèi)容和學(xué)時(shí)做了較合理的安排。理論課教學(xué)安排了五大部分的內(nèi)容。
第一部分:軟件工程回顧。主要內(nèi)容包括軟件工程概念、需求分析、分析建模、軟件設(shè)計(jì)、軟件編碼、軟件測(cè)試和軟件維護(hù)。重點(diǎn)強(qiáng)調(diào)軟件開發(fā)過程中的文檔,因?yàn)槲臋n體現(xiàn)的是開發(fā)過程的可視化,只有可視化才能發(fā)現(xiàn)缺陷,進(jìn)而修復(fù)缺陷。這部分主要是復(fù)習(xí),特別強(qiáng)調(diào)了文檔的重要性和編寫,分配了6個(gè)學(xué)時(shí)。
第二部分:軟件過程改進(jìn)與管理簡(jiǎn)介。主要內(nèi)容包括四部分:過程思想和軟件過程改進(jìn)框架的軟件過程架構(gòu)、軟件過程改進(jìn)規(guī)劃圖、軟件過程評(píng)估,以及軟件過程改進(jìn)的行動(dòng)計(jì)劃。本部分重點(diǎn)強(qiáng)調(diào)過程的思想和有效的過程以及軟件過程改進(jìn)框架的構(gòu)成,使學(xué)生了解軟件過程改進(jìn)的著手點(diǎn)。這部分內(nèi)容較少,分配了4個(gè)學(xué)時(shí)。
第三部分:個(gè)體軟件過程簡(jiǎn)介。主要介紹個(gè)體軟件過程概述、個(gè)體度量過程、個(gè)體規(guī)劃過程和個(gè)體質(zhì)量管理過程。本部分重點(diǎn)強(qiáng)調(diào)個(gè)體度量的方法、個(gè)體規(guī)劃的方法和個(gè)體質(zhì)量管理的方法,通過個(gè)體軟件過程改進(jìn)如何提高個(gè)人技能,從而提高個(gè)人開發(fā)軟件的質(zhì)量。這部分與培養(yǎng)學(xué)生的個(gè)人技能關(guān)系密切且實(shí)用性強(qiáng),還有相關(guān)的實(shí)驗(yàn),分配了8個(gè)學(xué)時(shí)。
第四部分:團(tuán)體軟件過程簡(jiǎn)介。主要內(nèi)容包括TSP小組的建立過程、操作過程、工作流程,TSP的結(jié)構(gòu),TSP的啟動(dòng)和TSP的質(zhì)量管理。本部分重點(diǎn)強(qiáng)調(diào)TSP小組建立的原則、方法和工作流程,以及TSP的啟動(dòng)和質(zhì)量管理。旨在使學(xué)生了解TSP的小組的重要性,使學(xué)生懂得團(tuán)隊(duì)的重要性和自己在團(tuán)隊(duì)中的角色與作用,從而提高團(tuán)隊(duì)的工作效率和工作質(zhì)量。這部分內(nèi)容較少,但目前軟件企業(yè)進(jìn)行項(xiàng)目開發(fā)時(shí)都是以團(tuán)隊(duì)為單位進(jìn)行的,應(yīng)重點(diǎn)關(guān)注,因此分配了6個(gè)學(xué)時(shí)。
第五部分:軟件能力成熟度模型簡(jiǎn)介。主要介紹CMM中成熟度的五個(gè)級(jí)別、各級(jí)別的特征和過程能力,CMM的內(nèi)部結(jié)構(gòu),CMM的使用,基于CMM的過程評(píng)估,以及SEI成熟度問卷、SEI輔助評(píng)估過程和SEI的軟件能力評(píng)價(jià)。這部分主要強(qiáng)調(diào)關(guān)鍵過程域和CMM的使用,旨在使學(xué)生了解如何用CMM指導(dǎo)軟件開發(fā)、提高軟件質(zhì)量、符合國(guó)際規(guī)范,如何用CMM進(jìn)行評(píng)估和評(píng)價(jià)軟件企業(yè)。這部分內(nèi)容較多,企業(yè)中應(yīng)用廣泛,因此分配了8個(gè)學(xué)時(shí)。
2.4實(shí)驗(yàn)課的安排與實(shí)施
軟件過程改進(jìn)是一門實(shí)驗(yàn)性很強(qiáng)的課程,無論是CMM還是TSP或PSP都可進(jìn)行相應(yīng)的實(shí)驗(yàn)。但是對(duì)于大學(xué)本科生來說,進(jìn)行CMM試驗(yàn)難度較大,原因是環(huán)境和條件的限制,因而這部分實(shí)驗(yàn)可操作性不強(qiáng),不考慮在教學(xué)計(jì)劃內(nèi)。TSP是以團(tuán)隊(duì)為單位進(jìn)行軟件項(xiàng)目開發(fā),這部分的實(shí)驗(yàn)應(yīng)與實(shí)踐環(huán)節(jié)中的IT項(xiàng)目實(shí)踐結(jié)合進(jìn)行。因?yàn)榕cPSP相關(guān)的內(nèi)容的實(shí)驗(yàn)規(guī)模小、可操作性強(qiáng),因此與理論課同時(shí)進(jìn)行的實(shí)驗(yàn)課的主要內(nèi)容就是與PSP相關(guān)的內(nèi)容。實(shí)驗(yàn)課主要分四部分內(nèi)容進(jìn)行。
第一部分:軟件工程實(shí)踐。按軟件工程的理論和方法,開發(fā)一個(gè)小的軟件,重在熟悉軟件開發(fā)過程和撰寫相關(guān)文檔。
第二部分:個(gè)體度量實(shí)驗(yàn)。在開發(fā)軟件過程中進(jìn)行軟件度量,主要進(jìn)行時(shí)間和缺陷度量,按PSP0過程中的相應(yīng)腳本進(jìn)行,主要是填寫完整的時(shí)間日志和缺陷日志。
第三部分:個(gè)體規(guī)劃實(shí)驗(yàn)。根據(jù)第一部分實(shí)驗(yàn)的結(jié)果,利用PROBE估算方法進(jìn)行時(shí)間和規(guī)模估算,根據(jù)估算的結(jié)果制定開發(fā)計(jì)劃。
第四部分:個(gè)體質(zhì)量管理實(shí)驗(yàn)。在開發(fā)軟件過程中進(jìn)行設(shè)計(jì)評(píng)審和代碼評(píng)審,具體操作方法是按代碼評(píng)審腳本進(jìn)行代碼評(píng)審并填寫代碼評(píng)審檢查單,按設(shè)計(jì)評(píng)審腳本進(jìn)行設(shè)計(jì)評(píng)審并填寫設(shè)計(jì)評(píng)審檢查單。
本課程實(shí)驗(yàn)可以單獨(dú)進(jìn)行,可以同其他軟件課程(如數(shù)據(jù)庫(kù)課程、操作系統(tǒng)課程、編譯原理課程等)的實(shí)驗(yàn)結(jié)合進(jìn)行,把本課程的實(shí)驗(yàn)思想和方法融合到其他課程的實(shí)驗(yàn)中。
2.5考試方式與成績(jī)?cè)u(píng)定
由于本課程的理論部分重在介紹軟件過程改進(jìn)的思想、目的、要求、原理、方法和操作步驟,重點(diǎn)是使學(xué)生了解并掌握軟件過程改進(jìn)方法和改進(jìn)步驟,學(xué)會(huì)使用它們,而沒有必要去強(qiáng)行記住,因此如果單獨(dú)出卷進(jìn)行閉卷考試意義不大,故理論課程部分的考核重在理解,所以可要求學(xué)生根據(jù)對(duì)這門課的理解、體會(huì)和使用的情況寫總結(jié)報(bào)告。按所寫報(bào)告、實(shí)驗(yàn)情況、平時(shí)表現(xiàn)等方面綜合進(jìn)行成績(jī)?cè)u(píng)定,成績(jī)分為優(yōu)秀、良好、中等、及格和不及格五個(gè)等級(jí)。
3幾點(diǎn)思考
(1) 教師隊(duì)伍。開設(shè)這門課的教師,最好由從事過軟件過程改進(jìn)工作的人員承擔(dān),但目前有這方面經(jīng)驗(yàn)的人員絕大部分是從事軟件開發(fā)與管理的人員,而這部分人員比較缺乏教學(xué)經(jīng)驗(yàn),即使是有一定的教學(xué)經(jīng)驗(yàn),由于本身工作很忙,把他們請(qǐng)到學(xué)校授課也很困難。目前的解決方法可以是送有教學(xué)經(jīng)驗(yàn)又有一定軟件開發(fā)經(jīng)驗(yàn)的教師進(jìn)行培訓(xùn),培訓(xùn)方式可以是到軟件過程改進(jìn)工作做得好的軟件企業(yè)中進(jìn)行實(shí)際訓(xùn)練積累實(shí)際經(jīng)驗(yàn),還可以參加相應(yīng)的培訓(xùn)班,但最好是兩者結(jié)合。
(2) 學(xué)生素質(zhì)。一定程度上來說,教學(xué)效果是由學(xué)生決定的,本課程更是如此,尤其是實(shí)驗(yàn)課。本課程理論枯燥、實(shí)驗(yàn)綜合性強(qiáng),要求學(xué)生有較高的自律性、綜合處理問題的能力、較強(qiáng)的忍耐力。
(3) 前導(dǎo)課。對(duì)這門課很重要的前導(dǎo)課是軟件工程和程序設(shè)計(jì),如果這兩門課程講授的內(nèi)容不到位,導(dǎo)致學(xué)生理論基礎(chǔ)差、實(shí)驗(yàn)缺乏,那么必將使本課程的教學(xué)效果差。
(4) 教材。本課程的教材應(yīng)該既具有理論性又具有實(shí)踐性,理論通俗、易懂、簡(jiǎn)明、重點(diǎn)突出,實(shí)踐可操作性強(qiáng)。
(5) 實(shí)驗(yàn)。實(shí)驗(yàn)是本門課的重要組成部分,目的是使學(xué)生理解軟件過程改進(jìn)的原理,掌握改進(jìn)的方法和步驟,從而達(dá)到會(huì)應(yīng)用的目的。這就要求實(shí)驗(yàn)環(huán)境的選擇要合理,實(shí)驗(yàn)內(nèi)容的選擇要恰當(dāng),實(shí)驗(yàn)步驟設(shè)計(jì)的可操作性要強(qiáng)。
參考文獻(xiàn)
[1] 呂曉輝. 基于CMM/PSP/TSP的軟件過程改進(jìn)[J]. 計(jì)算機(jī)工程,2003,29(4):11-13.
[2] 張為. 現(xiàn)代軟件開發(fā)的過程管理方法研究[J]. 計(jì)算機(jī)工程與科學(xué),2003,25(4):99-103.
[3] Sami Zahran著. 陳新,羅勁楓等譯. 軟件過程改進(jìn)[M]. 北京:機(jī)械工業(yè)出版社,2002.
[4] 龔波主編. 軟件開發(fā)過程管理[M]. 北京:中國(guó)水利水電出版社,2003.
[5] Kim Caputo著. 于宏光,王家鋒等譯. 軟件開發(fā)過程改進(jìn)[M]. 北京:機(jī)械工業(yè)出版社,2002.
[6] 張海潘編著. 軟件工程導(dǎo)論[M]. 北京:清華大學(xué)出版社,2002.
[7] Watts S. Humphrey著. 吳超英等譯. PSP軟件工程師的自我改進(jìn)過程[M]. 北京:人民郵電出版社,2006.
[8] Watts S. Humphrey著. Introduction to the Personal Software Process[M]. 北京:人民郵電出版社,2001.
[9] Watts S. Humphrey著. Introduction to the Team Software Process [M]. 北京:清華大學(xué)出版社,2002.
[10] Kim Caputo著. 于宏光,王家鋒等譯. CMM實(shí)施與軟件過程改進(jìn)[M]. 北京:機(jī)械工業(yè)出版社,2003.
[11] 周亦敏,陸偉成,汪河清. 計(jì)算機(jī)工程實(shí)驗(yàn)教學(xué)體系的構(gòu)成與改革[J]. 實(shí)驗(yàn)室研究與探索,2005,25(5):66-68.