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