特徵蔓延(Feature creep)是指一產品(像計算機軟體)的功能持續膨脹或增加的情形。產品基本功能以外的擴充功能,會使產品比原始設計要更複雜。長時間來看,額外或不需要的功能慢慢的進入系統中,使系統超出原來設定的目標。特徵蔓延是產品成本及時間增加的常見原因之一。特徵蔓延會造成危害,甚至可能會結束一個產品及專案。
基本介紹
- 中文名:特徵蔓延
- 外文名:Feature creep
- 學科:軟體工程
- 定義:不受控制地增加技術特徵
- 影響:產品成本及時間增加
- 領域:項目範圍蔓延
定義,產品的生命周期,控制,範圍蔓延,
定義
在軟體項目中,項目範圍蔓延和特徵蔓延是項目失敗的主要原因,範圍蔓延是指在集成變更管理過程控制下實際發生的、必需的、更正性或預防性的變動,而沒有經過控制就發生的範圍變更。特徵蔓延是指不受控制地增加技術特徵和外觀特徵到一個軟體項目中。特徵蔓延的主因常是因為製造商希望提供客戶更多用途或更想要的產品,以增加產品的銷售及市場占有率。不過當產品已實現所以設計時提出的所有機能,製造商剩下的選擇可能就是增加一些不一定需要的軟體機能,其代價可能是效率的下降,或是固定在某一個版本,代價可能是缺乏改善的產品。另一種特徵蔓延的原因是委員會設計最後決定在同一個產品上實現幾個不同的觀點,當越多特徵加入以支援某一觀點時,有些特徵需同時支援幾個觀點,往往會使整個的特點變得更複雜。
產品的生命周期
一個產品的生命周期會經過引入、成長、成熟及衰退四個階段。以下用Sony的隨身聽Walkman說明四個階段,有些階段容易出現特徵蔓延的情形。
引入
Sony提出了一個名為Walkman的隨身聽新產品,可播放錄音帶內的音樂,並提供最基本的播放、暫停、快轉、反轉及退出等機能。此時競爭者正在觀望,看此產品是否會建立一個值得投資的市場。
成長
在此市場有相當成長時,競爭者會進入市場,提供消費者更多的選擇,其差異常常只是價格及廠牌上的差異。
成熟
在成熟期時,競爭者的產品漸漸進入市場,為了創造了價格以外的差異化,競爭者也會導入新的機能(如“自動反轉”、“超重低音立體聲”、“慢跑防震”、“防潑水”等)。開拓者為了防止競爭者產品影響市場占有率,也會考慮是否要加入新的機能。在這個階段中最容易出現特徵蔓延的情形,因為開拓者及競爭者都希望用“新穎且改進過”的產品來說服消費者購買,以增加銷售量。在出現特徵蔓延後,當開拓者產品的價格開始因為產品的競爭而下降,是產品生命周期已到達成熟期的有力指標。有些人則認為成熟期是在產品的功能已經飽和的時候出現。
衰退
過時是衰退的主要原因,可能因為時代及技術的進步,市場領導者的技術已不是主流。例如1980年代隨身音樂播放的平台是錄音帶,1990年代是CD,2000年代則是MP3。當主流平台調整時,原來的平台就變得過時。
控制
有許多方式可以控制特徵蔓延:包括嚴格限制可增加的機能、允許產品有多種衍生機種,各變體中有不同的機能、刪除一些過多不必要的機能。
若產品在設計初期就有好的軟體架構,例如機能及資料存取的邏輯分離等作法,可以避免一些開發後期的特徵蔓延。利用嚴格的變更管理,或將變更延後至專案較後期的交付階段也可以有效的控制特徵蔓延。
另一種控制特徵蔓延的方式是讓產品有幾個不同的衍生機種,而新增特徵只在其中部分機種中出現。新特徵持續增加的過程中,系統的資源可能會不敷使用,因此一般會特別維護一個只有基本特徵的核心版本,以確保在系統資源較少時,此版本仍能正常工作。根據80/20法則,80%使用者只會使用到產品的基本特徵,這些使用者用的產品不需被另外20%使用者提出的新特徵所影響。產品仍然可以有新的特徵,只是新的特徵不需放在所有衍生機種中。有時一些特徵的維護成本高到無法接受的程度,此時刪剪一些不需要的特徵。新版本的產品可能可以直接省略特徵,也有可能在這些特徵完成移除前,需要一段時間進行切換,切換過程中這些特徵會標示為不推薦使用。若此產品有幾個不同的衍生機種,可能其中一些會初逐步淘汰。
有時失控的特徵蔓延會使產品遠遠超過當初規劃的範圍。例如《幕府將軍:全面戰爭》一開始只是設計成戰鬥模擬遊戲,但後來產品膨脹,產生了一些後遺症。微軟的Windows Vista本來只是Windows XP後的一個小改版,之後再銜接Windows 7,但後來變成大型改版,因此花了五年的開發時間。特徵蔓延更常見的後果是使產品變的比原來預期的更貴,因此反而使產品的銷售量下降,或是結束產品的生命周期。
範圍蔓延
範圍蔓延,是指項目範圍變更失控,項目目標遠超計畫的現象。項目的範圍、時間、成本三個要素被稱之為項目三角形,這三個要素對項目的成功有著很大的影響。範圍蔓延通常會造成項目工期延長、成本增加,同時團隊成員情緒低落、衝突加劇,產品質量下降,嚴重的範圍蔓延甚至會導致項目失敗。在軟體項目中,由於需求獲取相對困難、客戶對軟體項目不了解等原因,所以會更容易出現範圍蔓延現象,這也是軟體項目實施成功率不高的重要原因之一。