【第168期 September 5, 2011】
 

研發新視界

軟體專案成本與品質與軟體開發

作者/李彥霖

[發表日期:2011/9/1]


前言

大多數的軟體專案總是無法以預期的成本、品質與成本執行完成,即使已經估算出專案的工期與人力,如果對客戶的RFP(需求建議書)了解不夠透徹的狀況下常忽視了許多的風險成本,甚至是相關的罰則以及條文,導致最後專案執行下來,總是不如預期的收益。

軟體專案成本與品質與軟體開發

軟體專案的成本,我們以獲得價值(Budget Cost of Work Performed, BCWP)來表現實際進度所耗用的預估成本。公式如下:

BCWP=實際進度的時數(Actual % completion) * 預估單位時間所需的成本(BAC,budgeted cost at completion)

簡言之,預估單位時間所需要的成本必須要考慮工作量和生產力,但我們又如何能準確地去評估?我們必須要全盤考量軟體成本、品質以及風險管理等因素,但公司卻不能忽略現實的因素,一個很常見的問題,很多軟體系統常常找不到人來維護以及修改,如果軟體開發者無法負起維護軟體的責任,那該軟體系統是否就無法修改以及維護?更困難的是該系統設計者甚至於開發團隊早已離開公司,留下的文件也不齊全,或根本沒有留下文件,導致該軟體系統一旦發生問題,則容易發生無法修改或是難以修改的窘境,變成頭痛醫頭,腳痛醫腳,程式裡無限制的判斷式,勢必會造成更難以維護的局面,如此惡性循環,想要達到預期的效益難矣!

因此公司對於知識管理的重要性不言而喻,有時候系統不是那麼樣地難以維護或修改,在缺乏文件或是文件已經年久失修的情形下,沒有人看得懂設計者的設計邏輯,只能靠有經驗的開發者一步一步的拼湊程式片段,這還是在原本系統基礎體質尚且良好的狀態下,如果原本系統設計已經非常的糟糕,那麼此系統幾近可以宣告不治,只能打掉重建。以生命週期成本來看,規劃專案成本,不要只是一味的降低專案成本,例如專案部門估算成本後提案給業務部門,幾乎先幫老闆壓低成本(內部先打折),提給客戶時為了打好客戶關係,再幫客戶打折,這樣降低開發成本會造成甚麼影響,我們可以參考下圖:


《圖一》


表面上降低開發成本可以減少財務支出進而降低公司的財務風險,但卻會因為其設計未考慮未來軟體維護修改而造成專案成本的增加,這正是為了節省軟體開發成本常見捨本逐末的例子。在軟體專案的成本規劃中,不能只考慮軟體開發的成本,必須考慮到後續的維護修改,這樣的成本規劃才是有效的規劃。

如今常見的問題,大多數管理者卻只在意如期交付軟體產品,甚至是想著系統先上線再說,而忽略了未來無法或難以維護的系統其實是無法讓公司取得效益的,因此就算是開發出可以對客戶交差上線的系統,並沒有考慮後續維護的軟體專案並不能算是成功的軟體專案。

要讓一個軟體系統運作順利,就要便於修改與維護,所以從開發的技術、架構或是開發的工具等等都必須仔細的考量,軟體開發者不僅僅是開發系統,還必須能考慮到未來軟體維護的便利性,並留下專案文件,如系統需求確認規格書、系統分析及設計報告書、系統程式設計規格書、系統原始碼及系統目的碼、系統運轉測試報告書等等相關的文件,而且務必要求內容的確實,不然又是虛有形式,待哪天軟體開發者轉戰他地時,後續維護者肯定是叫苦連天。為什麼軟體開發者無法開發出便於維護修改的軟體,以目前軟體市場的競爭激烈,軟體的價格相對地降低,而公司為了獲利,就必須將低開發成本,才能得到相當的利潤,而當開發成本越來越低,於是軟體後續的維護、驗測及修改等全面性考量的理想設計便無法實現。

結語

因此不能僅是思考著降低軟體開發成本而不去注重維護及修改的部分,雖然不能忽略市場競爭激烈的因素,但是還是必須思考一套整合開發流程維護及修改的方式,在開發的階段就規畫如何便於維護,如此一來可以大幅地降低軟體維護的成本。制定了良好的作業流程,管理者必須實際地去執行以及監督,才能得到良好的成效。

參考資料

1.中華民國資訊軟體品質協會知識論壇
2.jim yeh’s Blog