摘要:針對(duì)“軟件工程經(jīng)濟(jì)學(xué)”課程中軟件成本估算教學(xué)環(huán)節(jié)存在的對(duì)估算模型原理理解不透徹和應(yīng)用模型分析、解決實(shí)際問(wèn)題較困難等現(xiàn)象,通過(guò)對(duì)課程的性質(zhì)、特點(diǎn)進(jìn)行分析以及教學(xué)經(jīng)驗(yàn)的總結(jié),提出案例驅(qū)動(dòng)的軟件成本估算的教學(xué)方式,闡述軟件成本估算模型——Delphi法案例的設(shè)計(jì)和案例教學(xué)步驟中的注意事項(xiàng)。
關(guān)鍵詞:軟件工程經(jīng)濟(jì)學(xué);軟件成本估算;Delphi法;案例驅(qū)動(dòng)
作者簡(jiǎn)介:岳清(1973-),女,河南鄭州人,北京信息科技大學(xué)計(jì)算機(jī)學(xué)院,副教授;郝保水(1976-),男,河北衡水人,北京信息科技大學(xué)計(jì)算機(jī)學(xué)院,講師。(北京 100101)
基金項(xiàng)目:本文系北京信息科技大學(xué)教育教學(xué)改革項(xiàng)目(項(xiàng)目編號(hào):2011JGYB22)、“北京市級(jí)人才培養(yǎng)模式創(chuàng)新試驗(yàn)區(qū)——軟件工程專(zhuān)業(yè)卓越計(jì)劃試點(diǎn)改革項(xiàng)目”的研究成果。
中圖分類(lèi)號(hào):G642.0 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1007-0079(2013)19-0094-03
軟件工程經(jīng)濟(jì)學(xué)是軟件工程的三大學(xué)科分支之一,與軟件工程技術(shù)學(xué)和軟件工程管理學(xué)共同構(gòu)成軟件工程學(xué)科體系。該課程是軟件工程專(zhuān)業(yè)本科生和研究生的一門(mén)重要專(zhuān)業(yè)課。有效的軟件成本估算是減少軟件項(xiàng)目預(yù)算超支問(wèn)題的首要措施,是成功管理軟件項(xiàng)目的必要前提。[1]因此軟件成本估算是“軟件工程經(jīng)濟(jì)學(xué)”課程的重要組成部分,有著舉足輕重的分量。
常用的軟件成本估算方法有:參數(shù)模型估算法、專(zhuān)家估算法、類(lèi)比估算法、自頂向下估算法和自底向上估算法等。其中,專(zhuān)家估算法是目前應(yīng)用最為廣泛的成本估算方法。本文通過(guò)專(zhuān)家估算法——Delphi法教學(xué)過(guò)程的分析,探討以學(xué)生為主體的案例驅(qū)動(dòng)教學(xué)過(guò)程。
一、Delphi法介紹
Delphi 法最早出現(xiàn)于20世紀(jì)50年代末,是當(dāng)時(shí)美國(guó)為了預(yù)測(cè)在其“遭受原子彈轟炸后,可能出現(xiàn)的結(jié)果”而發(fā)明的一種方法。美國(guó)蘭德公司(RAND)的赫爾默(Helmer)和戈登(Gordon)于1964年首先將其用于技術(shù)預(yù)測(cè)。此后便迅速地應(yīng)用于美國(guó)和其他國(guó)家。除了科技領(lǐng)域之外,其還幾乎可以用于任何領(lǐng)域的預(yù)測(cè),如教育預(yù)測(cè)、人口預(yù)測(cè)、醫(yī)療保健預(yù)測(cè)、經(jīng)營(yíng)和需求預(yù)測(cè)等。[2]Delphi法是專(zhuān)家估算法的一種,由于專(zhuān)家在進(jìn)行估算的時(shí)候很可能有產(chǎn)生悲觀、樂(lè)觀的偏見(jiàn),甚至是由于對(duì)估算對(duì)象了解不夠而產(chǎn)生偏差很大的估算,因此對(duì)于較大的項(xiàng)目就不能由一個(gè)專(zhuān)家來(lái)估算,而需要多個(gè)專(zhuān)家的群體分析。Delphi法即采用專(zhuān)家群體的意見(jiàn),不是專(zhuān)家個(gè)人的意見(jiàn),因此又稱(chēng)為專(zhuān)家群體法,在對(duì)一些規(guī)模較大、研發(fā)經(jīng)費(fèi)較多的項(xiàng)目做成本估算時(shí)項(xiàng)目管理部門(mén)往往采用Delphi法。[3,4]
二、傳統(tǒng)教學(xué)中暴露的問(wèn)題和改革的思路
在傳統(tǒng)的教學(xué)過(guò)程中,教師通過(guò)對(duì)一個(gè)軟件項(xiàng)目成本估算來(lái)講述Delphi法每一個(gè)步驟。由于Delphi法的求解流程復(fù)雜,用時(shí)較長(zhǎng),同時(shí)課程的連貫性很強(qiáng),分析過(guò)程一環(huán)扣著一環(huán),這種“被動(dòng)”的學(xué)習(xí)過(guò)程導(dǎo)致有一部分學(xué)生“掉隊(duì)”,對(duì)Delphi模型理解不透徹,更談不上應(yīng)用模型分析和解決實(shí)際問(wèn)題。
課程改革的思路是讓學(xué)生最大限度參與到教學(xué)過(guò)程中,讓學(xué)生充當(dāng)Delphi分析法中的一個(gè)成員,對(duì)學(xué)生熟悉的一個(gè)項(xiàng)目用Delphi法進(jìn)行成本/工作量估算。在整個(gè)項(xiàng)目成本估算的過(guò)程中,學(xué)生不是被動(dòng)地接受知識(shí),而是作為一個(gè)參與者,主動(dòng)地、直接地參與了估算過(guò)程,極大調(diào)動(dòng)了學(xué)習(xí)積極性。
三、教學(xué)改革后的Delphi法教學(xué)過(guò)程
由于軟件本身的特性,人員成本通常占到整個(gè)軟件項(xiàng)目成本的絕大部分,“成本估算”與“工作量估算”在很多情況下可交替使用。本文采用的是“工作量的估算”。
本案例教學(xué)是用Delphi法對(duì)一軟件項(xiàng)目的開(kāi)發(fā)工作量進(jìn)行估算。在軟件項(xiàng)目的選擇上要選擇學(xué)生熟悉的項(xiàng)目,如:數(shù)據(jù)庫(kù)課程設(shè)計(jì)大作業(yè)、軟件項(xiàng)目實(shí)踐課程大作業(yè)或者管理信息系統(tǒng)大作業(yè)。學(xué)生熟悉項(xiàng)目,有一定的系統(tǒng)設(shè)計(jì)、開(kāi)發(fā)經(jīng)驗(yàn),對(duì)工作量的估算相對(duì)比較準(zhǔn)確,不會(huì)產(chǎn)生很大的分歧。本文采用的項(xiàng)目是管理信息系統(tǒng)課程的大作業(yè)“酒店客房管理系統(tǒng)”。學(xué)生已以小組為單位完成了“酒店客房管理系統(tǒng)”的需求分析、設(shè)計(jì)和實(shí)現(xiàn),對(duì)系統(tǒng)構(gòu)建過(guò)程比較熟悉。教師在課程之前準(zhǔn)備好“酒店客房管理系統(tǒng)”的需求說(shuō)明書(shū),其中的需求要比管理信息系統(tǒng)課程實(shí)現(xiàn)的系統(tǒng)稍復(fù)雜一些,給學(xué)生發(fā)揮的空間。需求說(shuō)明書(shū)在課前發(fā)給學(xué)生,要求學(xué)生課前預(yù)習(xí),了解需求。
課堂教學(xué)步驟如下:
1. 教師講解Delphi法求解流程
Delphi法的求解流程如圖1所示,教師簡(jiǎn)略講解Delphi法的各個(gè)步驟,說(shuō)明專(zhuān)家調(diào)查表、反饋意見(jiàn)統(tǒng)計(jì)表的填表方法、幾個(gè)關(guān)鍵參數(shù)的含義。這里的講解不用很詳細(xì),讓學(xué)生在下面的活動(dòng)中去體會(huì)Delphi法的求解流程。
2.分組
通常教學(xué)班有30人左右,可分為5組,每組6人,其中每組5名學(xué)生的角色是專(zhuān)家,1名學(xué)生的角色是會(huì)議主持人。不要把成績(jī)好或者差的學(xué)生集中在一組,最好各組之間能力平衡。應(yīng)選擇有一定組織能力、專(zhuān)業(yè)能力較強(qiáng)的學(xué)生擔(dān)任會(huì)議主持人角色。
3.項(xiàng)目信息和評(píng)審規(guī)則介紹
充當(dāng)會(huì)議主持人的學(xué)生應(yīng)在課前對(duì)項(xiàng)目進(jìn)行深入的了解和分析,并且準(zhǔn)備項(xiàng)目介紹的PPT,在課上將項(xiàng)目介紹給同一小組的專(zhuān)家。介紹的內(nèi)容包括:項(xiàng)目的背景資料、需求說(shuō)明書(shū)、項(xiàng)目進(jìn)度的相關(guān)要求和評(píng)審的規(guī)則。評(píng)審的規(guī)則有調(diào)查終止次數(shù)、調(diào)查終止的上界。這里假設(shè)調(diào)查終止次數(shù)為4,也就是最多4輪后就要結(jié)束調(diào)查。調(diào)查終止的上界就是臨界變異系數(shù),變異系數(shù)是反映數(shù)據(jù)離散程度的絕對(duì)值,由于各模塊工作量的平均值不同,比較其變異程度就不能采用標(biāo)準(zhǔn)差,而需采用標(biāo)準(zhǔn)差與平均數(shù)的比值(相對(duì)值)來(lái)比較。標(biāo)準(zhǔn)差與平均數(shù)的比值稱(chēng)為變異系數(shù),臨界變異系數(shù)即為評(píng)審可以接受的數(shù)據(jù)最大變異程度,本文假設(shè)臨界變異系數(shù)為15%,對(duì)某個(gè)模塊分析時(shí),當(dāng)專(zhuān)家組對(duì)該模塊工作量估值的變異系數(shù)小于等于該值,調(diào)查終止。
4.發(fā)放調(diào)查表
會(huì)議主持人發(fā)放調(diào)查表,如表1所示,本案例的“酒店客房管理系統(tǒng)”由6個(gè)模塊組成,分別是客房管理模塊、預(yù)約管理模塊、前臺(tái)接洽模塊、客人結(jié)賬模塊、夜審模塊和查詢模塊。由于在項(xiàng)目開(kāi)發(fā)中可能會(huì)遇到各種風(fēng)險(xiǎn),因此在估算時(shí)對(duì)每個(gè)模塊的工作量按三種不同的情況進(jìn)行估算:樂(lè)觀、最可能和悲觀。樂(lè)觀值是指在條件最有利的情況下估算的值,最可能值是指在正常情況下估算的值,悲觀值是指在條件最不利情況下估算的值。由于所選的項(xiàng)目是學(xué)生熟悉的項(xiàng)目,這就保證了估算時(shí)不會(huì)產(chǎn)生嚴(yán)重的分歧。
5.專(zhuān)家無(wú)記名填寫(xiě)調(diào)查表
小組中的5名專(zhuān)家無(wú)記名填寫(xiě)專(zhuān)家調(diào)查表,分別給出各個(gè)模塊工作量的樂(lè)觀值、最可能值和悲觀值:第k個(gè)專(zhuān)家對(duì)第i個(gè)模塊工作量估算的樂(lè)觀值為aki,第k個(gè)專(zhuān)家對(duì)第i個(gè)模塊工作量估算的最可能值為mki,第k個(gè)專(zhuān)家對(duì)第i個(gè)模塊工作量估算的悲觀值為bki。本課程在原有的系統(tǒng)上增加了少部分功能,學(xué)生能夠根據(jù)先前的知識(shí)和經(jīng)驗(yàn)對(duì)各個(gè)模塊的工作量進(jìn)行估算。
6.主持人計(jì)算及匯總數(shù)據(jù)
專(zhuān)家將填寫(xiě)好的調(diào)查表交給主持人,主持人要計(jì)算出估值的平均值和變異系數(shù)。根據(jù)中心極限定理可知, 各模塊工作量服從正態(tài)分布,[5]計(jì)算過(guò)程如下:
根據(jù)公式計(jì)算出每個(gè)專(zhuān)家對(duì)每個(gè)模塊工作量估算的期望值。
根據(jù)公式計(jì)算各模塊的工作量估值的平均值,即5個(gè)專(zhuān)家工作量估值的平均值。
根據(jù)公式計(jì)算出專(zhuān)家組對(duì)i模塊成本估值的樣本均方差。
根據(jù)公式計(jì)算出專(zhuān)家組對(duì)i模塊成本估值的變異系數(shù)。[2]
在這個(gè)環(huán)節(jié)中,讓學(xué)生通過(guò)數(shù)據(jù)去體會(huì)均方差σ2i和變異系數(shù)εi兩個(gè)概念的不同,并以小組為單位討論。這兩個(gè)參數(shù)都是體現(xiàn)專(zhuān)家組估值與平均值的差異,σ2i體現(xiàn)的是絕對(duì)值,而εi體現(xiàn)的是相對(duì)值,因此在比較兩組或多組均值不同的數(shù)據(jù)時(shí),應(yīng)該用變異系數(shù)而不是均方差作為比較的參考值。計(jì)算出以上數(shù)據(jù)后,會(huì)議主持人填寫(xiě)專(zhuān)家組反饋意見(jiàn)統(tǒng)計(jì)表,如表2所示。
由變異系數(shù)判斷該子模塊是否終止。變異系數(shù)體現(xiàn)了不同專(zhuān)家估算值和平均值偏差的程度。變異系數(shù)越小,表示專(zhuān)家的意見(jiàn)越統(tǒng)一,否則,意見(jiàn)有較大的分歧。如果變異系數(shù)小于本例初始的設(shè)定值15%,則對(duì)該模塊的分析到此結(jié)束,不再進(jìn)入下一輪調(diào)查,這一輪計(jì)算的估值平均值即為該模塊的工作量估值。如果這一輪變異系數(shù)大于初始設(shè)定值,則再次判斷調(diào)查的次數(shù)是否到達(dá)上界,如果到達(dá),則終止調(diào)查,該模塊的工作量估值為前面各次調(diào)查估值平均值的平均值。如果這一輪變異系數(shù)大于初始設(shè)定值并且調(diào)查次數(shù)沒(méi)有到達(dá)上界,則調(diào)查次數(shù)加1,進(jìn)入下一輪調(diào)查。實(shí)際教學(xué)過(guò)程中,學(xué)生會(huì)發(fā)現(xiàn)意見(jiàn)統(tǒng)一的模塊只進(jìn)行了一輪或兩輪就終止了,而分歧較大的模塊則調(diào)查的次數(shù)較多。
7.專(zhuān)家討論
在新一輪調(diào)查之前主持人要組織召開(kāi)專(zhuān)家會(huì)議,公布這一輪要調(diào)查模塊的估值平均值、工作量估值的均方差和變異系數(shù),然后每個(gè)專(zhuān)家闡述各自的意見(jiàn),經(jīng)過(guò)充分討論之后,重新填調(diào)查表。在這個(gè)教學(xué)環(huán)節(jié)中學(xué)生討論得比較激烈,各自闡述原因,溝通的過(guò)程促進(jìn)了學(xué)生對(duì)項(xiàng)目開(kāi)發(fā)過(guò)程的理解。注意,在步驟6中終止調(diào)查的模塊就不需要再次分析了,只需要分析變異系數(shù)大于初始設(shè)定值的那些模塊。新一輪調(diào)查,專(zhuān)家是按照如下準(zhǔn)則修改數(shù)據(jù)的。[3]
如果專(zhuān)家之前對(duì)該模塊給出的值大于估值平均值,這一輪應(yīng)該往低估,并且給出的值應(yīng)該介于估值平均值和上一次給定值的之間。
如果專(zhuān)家之前對(duì)該模塊給出的值小于估值平均值,這一輪應(yīng)該往高估,并且這一輪給出的值應(yīng)該介于估值平均值和上一次給定值的之間。
以上兩個(gè)原則保證了新一輪調(diào)查變異系數(shù)的減小,也就是專(zhuān)家的意見(jiàn)趨于統(tǒng)一。專(zhuān)家按照上述原則填調(diào)查表,返回步驟5。
上述7個(gè)步驟就完成了Delphi法分析過(guò)程。不同模塊工作量估算過(guò)程可能有所不同。有的模塊只進(jìn)行了一輪,變異系數(shù)小于初始設(shè)定值,就不再估算了,輸出估值平均值;有的模塊進(jìn)行了幾輪,變異系數(shù)在減小,在規(guī)定的調(diào)查次數(shù)中滿足了變異系數(shù)小于初始設(shè)定值,也不再估算了,輸出本次的估值平均值;還有可能有的模塊進(jìn)行了幾輪,變異系數(shù)在減小,但是在規(guī)定的調(diào)查次數(shù)中依然沒(méi)有滿足變異系數(shù)小于初始設(shè)定值,此時(shí)也不再估算了;輸出的估值平均值。
8.教師總結(jié)
教學(xué)過(guò)程中,學(xué)生主動(dòng)參與工作量估算、討論和計(jì)算等過(guò)程,積極性高;教師在學(xué)生分組討論前講解流程,在討論中對(duì)各組巡視、解答一些疑難問(wèn)題,在分組討論結(jié)束后,要進(jìn)行總結(jié),對(duì)各個(gè)小組討論中出現(xiàn)的典型問(wèn)題匯總,幫助學(xué)生梳理思路。
四、計(jì)算的簡(jiǎn)化
在Delphi法的求解過(guò)程中,有大量的計(jì)算過(guò)程。如,在步驟6中要計(jì)算模塊的期望工作量、估值的平均值、均方差和變異系數(shù)。如果這些全部在課堂教學(xué)中計(jì)算,整個(gè)Delphi法的教學(xué)案例很難在一個(gè)學(xué)時(shí)內(nèi)完成。為了解決這個(gè)問(wèn)題,在Delphi法課程之前,先讓學(xué)生完成一個(gè)軟件工程經(jīng)濟(jì)學(xué)教學(xué)輔助工具——Delphi法模型演算工具的制作。該工具實(shí)現(xiàn)了上述步驟5的計(jì)算。通過(guò)這個(gè)工具,主持人只要輸入各專(zhuān)家調(diào)查表中的數(shù)據(jù),就會(huì)輸出專(zhuān)家組反饋意見(jiàn)統(tǒng)計(jì)表相應(yīng)數(shù)據(jù)項(xiàng)的內(nèi)容。工具的制作不僅達(dá)到了讓學(xué)生課前預(yù)習(xí)的目的,還節(jié)省課程中案例教學(xué)時(shí)間。
五、教學(xué)效果
案例教學(xué)中,每位學(xué)生都以特定的角色參與了Delphi法的工作量估算過(guò)程。通過(guò)每一輪的調(diào)查、計(jì)算、討論,學(xué)生理解和掌握了Delphi法的原理和工作流程。對(duì)于某些復(fù)雜的參數(shù),如變異系數(shù)的理解,只有課堂上教師的理論講解是不夠的。學(xué)生通過(guò)幾輪調(diào)查,發(fā)現(xiàn)根據(jù)規(guī)則改變了估算值后,變異系數(shù)減小,就能感覺(jué)到變異系數(shù)的含義。
北京信息科技大學(xué)的軟件工程專(zhuān)業(yè)開(kāi)設(shè)了“軟件工程經(jīng)濟(jì)學(xué)”課程,本案例應(yīng)用于教學(xué)中,通過(guò)這種分組、討論的、互動(dòng)的教學(xué),學(xué)生對(duì)Delphi模型理解透徹,為將來(lái)應(yīng)用模型分析和解決實(shí)際問(wèn)題打下了良好的基礎(chǔ),學(xué)生體會(huì)到了“學(xué)中做,做中學(xué)”的教學(xué)理念,提高學(xué)生學(xué)習(xí)的積極性和主動(dòng)性,增加了對(duì)課程和專(zhuān)業(yè)的興趣,取得了很好的教學(xué)效果。
參考文獻(xiàn):
[1] 李明樹(shù),何梅,楊達(dá),等. 軟件成本估算方法及應(yīng)用[J].軟件學(xué)報(bào),2007,(4):775-795.
[2]于全夫.用Delphi法進(jìn)行選題計(jì)劃的評(píng)估[J].科技傳播,
2012,(16):15-16.
[3]趙瑋.軟件工程經(jīng)濟(jì)學(xué)[M].西安:西安電子科技大學(xué)出版社,
2008:78-82.
[4] [美]Barry W. Boehm.軟件工程經(jīng)濟(jì)學(xué)[M].北京:機(jī)械工業(yè)出版社,2004:237-250.
[5]周概榮.概率論與數(shù)理統(tǒng)計(jì)[M].北京:高等教育出版社,2008,(4):
128-141.
(責(zé)任編輯:劉輝)