軟體產品生命週期

.

為什麼我們無法維持高效「車庫」開發方式?

.

Pdlc

Software Product Life Cycle

.

從 20/80 到 80/20

軟體產品生命週期;一開始是花20%的力氣做到80%的工作量(著名的車庫式開發方式便是如此,典型的人少效率高,產品不完備卻充滿各種潛在的可能),至於開發速度為何在進入市場後變慢了呢(由20/80 變成需要花80%的力氣,卻只能開發出20%的產能,也就 20/80了),撇開開發單位在事務上的浪費,最大的原因無疑是由於系統複雜性的增加所帶來開發速度的變慢(當然再加上開始有維護的負荷了)。

.

複雜度

系統複雜度與開發團隊的浪費是效能的二大指標(Michael Dubakov )

.

主動規劃軟體的生命週期

產品生命週期的理論大家都不陌生,但軟體不比具有實體的器具,例如汽車有明顯的生命週期,車子一直開一直使用總是要維修的,一旦維修的成本越來越高,我們不用想也知道該換車了(老實說,車子不用等到開不動了才會想到要換車,其實當外觀開始有些落伍時,你大概就會想換車了)。軟體的置換則不比硬體,大部分業者都知道這個圖示但選擇忽視它,因為軟體新舊沒有那麼來的明顯,軟體也沒有所謂的大量生產、製造,不管是做一個或是做無數個都是一模一樣的,沒有汰舊的急迫性,同時網路連線做更新又是那麼的方便,讓人容易忽略了產品的市場風險,沒有考量到軟體開發需要較長的時間問題,尤其是一些較大型的軟體(那些個平台式的系統)。為了做到市場的持續性(產品永續經營)唯有相信軟體產品是有生命週期的,唯有提前進行開發作業才可能做到無縫的銜接方式。

讓我們來看一下微軟是怎麼做的。

.

windows version_2

Windows 的發展史

.

MS Windows的每一個版本的開發作業都是並行的。例如: Win98是在Win95開始開發還未上市前,就成立Win98開發團隊,開始開發作業的。那時完全不曉得市場對Win95會有怎樣的反映。但基於摩爾定律的預測再加上軟體開發費時的壓力,唯有提前開發才可能做到市場的持續性。

.

MS Pdlc

Windows的產品生命週期開發方式

.

微軟針對由20/80 轉換成 80/20 的解決方案,就是選擇了相信市場部門所提出的新版本的開發需求能夠讓自己的產品持續佔有市場的作法(以滿足未來客戶的需求為導向),也就是讓產品以一種重疊的開發方式,在新一代產品尚未投入市場時,就撥出少部分的人力投入未來版本的開發作業,這是ㄧ種必需極為敏捷的作法,因爲你的團隊ㄧ直在大量假設的前題下進行開發作業(辛苦可見)。未來當舊版本的維護成本上升到一定程度時,新版本可以隨時推出,因為他們能夠以80/20的開發速度前進。如上圖所示;要維持好的開發效能因素很多,而微軟選擇了重疊式的產品開發方式。請正視軟體版本的生命週期,以主動規劃新版本的功能來取代逐漸複雜化的系統。至於持續的加強重構對維持軟體的生命週期可行嗎? 如第一張圖示,重構只能暫解維運的負荷,對20/80效能不彰的現象難以產生具體的改善作用。

 

同樣身為軟體開發的業者,你呢? 你應該如何來規劃自己的軟體產品呢?