精品资料网()軟體成本估計精品资料网()1導論●軟體成本管理的問題:–軟體的開發成本經常被低估●預算編列不足、合約價格過低=時程延誤、品質問題–公開發表的成本估計方法過於「主觀」●「自己描述自己的方法,自己評估自己的方法有多準確」–價格競爭、低價搶標–影響軟體的成本的因素很多、發包者與承包者認知的落差精品资料网()1導論●為了更深入瞭解軟體成本:–需要知道成本發生在哪裡?–哪些因素影響軟體成本、各因素所占的權重?–瞭解軟體成本的分類、估計模式–瞭解估計方法的適用情況、影響成本估計準確度的因素、等等精品资料网()2成本影響因素●成本因子可歸納成七類屬性:–規模屬性–產品屬性–資訊科技屬性–人員屬性–專案屬性–環境屬性–管理屬性●這七類屬性可以幫助成本估計者思考成本的來源,也有助於模式的建立精品资料网()2成本影響因素●規模屬性–原始碼的行數(linesofcode)–子程式的數目–功能點(functionpoints)–資料項目的數目–文件的頁數精品资料网()2成本影響因素●產品屬性–軟體的類型–軟體的複雜度–使用的程式語言(資訊科技的屬性?)–要求的品質與可靠度–再用碼的數量–處理時間的限制精品资料网()2成本影響因素●資訊科技屬性–硬體架構–網體架構–軟體平台–中央處理器(CPU)、記憶體及通訊的限制–使用資訊科技的成熟度精品资料网()2成本影響因素●人員屬性–開發者的一般能力與學習能力–開發者的經驗–類似專案與開發環境的經驗–專案經理的經驗精品资料网()2成本影響因素●專案的屬性–使用的方法及工具–需求明確的程度–和顧客的溝通與關係–開發時程的緊迫性–專案組織的大小–預算充裕的程度精品资料网()2成本影響因素●環境屬性–行政複雜度–使用者參與程度–需求變更的頻繁程度–市場競爭的程度精品资料网()2成本影響因素●管理屬性–專案管理者的領導能力與經驗–團隊合作–資源分配–時程安排及控制–訓練–品質保證精品资料网()3軟體成本的分類●依生命週期成本分類●依外購軟體成本分類●依成本會計分類精品资料网()3.1依生命週期成本分類●開發成本(約45%)–需求分析–設計–編碼–整合測試●維護成本(約55%)–預防性維護–更正性維護–改善性維護精品资料网()3.1依生命週期成本分類●預防性維護(PreventiveMaintenance)–Y2K●更正性維護(CorrectiveMaintenance)–除錯工作(bugfixes)●改善性維護(PerfectiveMaintenance)–使用介面的調整–程式效能的提高精品资料网()3.1依生命週期成本分類●轉換成本(ConversionCost)–程式轉換、資料轉換、文件轉換–電腦化時,紙張的歷史資料的轉換?!●裝置成本(InstallationCost)–由於實際的操作環境比軟體開發環境要複雜許多,裝置的過程中往往會引發新的問題(跟其他系統銜接)●訓練成本–訓練往往不是一次就能達到目的,重複的訓練、訓練後發現的新需求都會使成本超乎預期●其他成本精品资料网()3.2依外購軟體成本分類●應用軟體的採購成本●顧問費用–SAP,Oracle,等ERP的「設定費用」(configuration,performancetuning,etc.)●軟體修改費用●其他軟體費用精品资料网()3.3依成本會計分類●直接成本(DirectCost)–人工(程式設計師、系統分析師、專案經理)–直接材料成本(比例低)●設備成本(CapitalCost)–軟體、硬體、辦公設備等●費用(Expense)–旅費、顧問費、訓練費等●分攤費用(Overhead)–行政人員費用、水電費、保險費用、管理費用精品资料网()4軟體成本估計的過程●軟體成本估計不是一次估計後就固定不變●軟體成本估計是一個過程–生命週期導向的估計過程–系統與模組層次的估計過程精品资料网()4.1生命週期導向的估計過程●第一階段:提出構想–粗略的成本估計與資料蒐集●專家判斷法●由上往下法–管理者依經驗與判斷來評估可行性及成本效益●不可行-取消構想●可行-進入第二階段根據p.151之圖2精品资料网()4.1生命週期導向的估計過程●第二階段:由專案小組分析需求並分解系統功能–正式估計成本●由下往上法●參數模式●類比法–專案核准?●不核准-取消專案●核准-進入第三階段根據p.151之圖2精品资料网()4.1生命週期導向的估計過程●第三階段:進行詳細的需求分析與初步設計–修改估計的成本–成本太高?●太高-調整預算或調整專案功能(需求)●不會太高-進行專案根據p.151之圖2精品资料网()4.2系統與模組層次的估計過程●先將系統分解成子系統,然後找尋過去完成的專案有沒有類似的功能,區分成–新開發模組–類似功能模組–相同功能模組●根據新模組的大小及再用模組的修改程度來估計成本–估計程式行數或功能點數–估計調整因子–估計再用模組的修改比例加總新模組與再用模組的成本再用模組(ReuseModule)精品资料网()4.2系統與模組層次的估計過程●估計新文件與再用文件的成本–比照程式模組的方式估算●估計測試成本–占總成本的15%~40%–依系統的複雜度、任務的重要性、顧客的品質要求●行政管理的費用及分攤的費用●估計風險係數●和先前的資料比較並做調整精品资料网()5軟體成本估計的方法●Boehm(1984):–演算模式–專家判斷法–類比法–由上往下法–由下往上法–巴金森法●ParkinsonMethod–勝算價格法●Price-to-WinMethod●Mohanty(1981):–歷史資料模式–統計分析模式–理論模式精品资料网()5軟體成本估計的方法●巴金森法:–工作的多寡是將資源耗盡為原則–有多少預算與多少時間就做多少事●勝算價格法:–以爭取合約為原則–可獲得合約的價格做為估計的基礎精品资料网()1專家判斷法●專家的條件:–在相關領域有實際的工作經驗–曾經管理過或從事相關工作的人員–具有成本估計的經驗精品资料网()1專家判斷法需要的資訊需要的資訊加總比重21181817171110111066551.經驗法則(含轉換比例)2.可用的資源(含能力水準)3.過去專案的資料4.過去估計的回饋5.過去類似專案的詳細功能6.更固定的模組和文件7.相關的模組和文件8.未來的開發策略9.行政費用的分攤10.使用的工具11.測試場所12.更特定的需求13.與其他系統的介面精品资料网()1專家判斷法使用的資訊使用的資訊加總比重8430281616987654443321.設計需求2.可用的資源3.原始碼4.可用的軟體工具5.開發產品的歷史資料6.新功能的規模和複雜度7.過去類似的作法8.受影響的文件9.修改及新增程式碼的數量10.是否有測試的場所11.需要修改的錯誤12.期限的壓力13.顧客14.可重複使用的需求15.期望的產品使用壽命16.品質要求精品资料网()1專家判斷法●當多個專家參與評估時,多個估計值的綜合可以下列方式獲得:–平均法–去除極值平均法●如:刪除前後各10%,保留中間80%做平均–中位數法(median)–三點估計法–德菲法(DelphiMethod)●群體決策方法,有興趣可自己閱讀chapter12精品资料网()1專家判斷法●三點估算法:C=(CL+4CM+CH)/6●其中:–CL:樂觀值的平均–CM:最可能值的平均–CH:悲觀值的平均精品资料网()2類比法(Analogy)●類比法的精神在於比較新專案與過去類似的專案–刪除舊系統存有而新系統卻不需要的功能–增加新系統需要而舊系統沒有的功能–根據以下因素來調整:●特殊的環境因素●人事成本的考量●新技術的引進●品質的要求●風險的因素等●專家判斷法的「專家」也會運用類比法精品资料网()3參數模式●參數模式(ParametricModels),又稱:–演算法則模式(AlgorithmicModels)–統計模式(Statistically-BasedModels)●基本概念:–軟體開發成本為軟體規模與調整因子的函數–軟體規模:●原始程式碼行數(LinesofCode,LOC)●功能點(FunctionPoint,FP)–調整因子:●影響軟體開發成本的因素精品资料网()3參數模式●基本概念(續):–函數關係●現在是「非線性函數」(non-linearfunction)●早期是「線性函數」(linearfunction)●參數估計模式可以下列的形式表示:–成本=常數+軟體規模之成本函數*調整因子–成本=常數+軟體規模之成本函數+調整成本精品资料网()3參數模式●以數學式表示:–C=C0+f(s)*g(x)–C=C0+f(s)+h(x)–其中:●C:估計成本(人月或人日)●s:軟體規模(LOC或FP)●f:規模函數●x:調整因子的向量●g:調整函數●h:調整成本函數●C0:常數精品资料网()3參數模式●規模函數f可為:–線性函數:●f(s)=aS–非線性函數:●f(s)=aSb–a,b為係數精品资料网()3參數模式●調整函數:–g(x)=g1(x1)*g2(x2)*...*gi(xi)●調整成本函數:–h(x)=h1(x1)+h2(x2)+...hi(xi)精品资料网()3參數模式●實際參數模式:–Farr&Zagorski模式–COCOMO模式(ConstructiveCostModel,Boehm,1981)●基本模式(BasicModel)●中級模式(IntermediateModel)●詳細模式(DetailedModel)–COCOMO2.0模式精品资料网()3參數模式●COCOMO模式–每一個模式又將軟體分為三個複雜的程度:●簡單型(OrganicMode)●中間型(Semi-detachedMode)●複雜型(EmbeddedMode)–基本模式:●未考慮「調整因子」●C=aSb精品资料网()3參數模式●COCOMO模式(續)–中級模式●加了15個調整因子g(x)=g1(x1)*g2(x2)*...*g15(x15)●C=aSb*g1(x1)*g2(x2)*...*g15(x15)–詳細模式●調整因子再分配到不同的開發階段●根據不同規模大小、等而調整分配到各階段的比重:–專案愈大,編碼所占的比重愈低、整合測試的比重愈高–專案愈複雜