特徵蔓延

功能蔓延是指產品裡的新持續膨脹或增加的情形，常出現在電腦軟體、电子游戏及消費電子產品內。增加的功能超過了產品的基本功能，有可能會讓軟體無法維持簡單設計，出現软件膨胀及過度複雜的情形。

有關「怎樣算是功能蔓延」的定義，會隨终端用户而不同，某個功能對一些用戶來說，可能算是「功能蔓延」，但卻是其他客戶實際會用到的功能。功能蔓延是最常見造成及時程逾期的原因之一。這會危害專案及產品，甚至可能讓專案及產品因此而結束。

原因
特徵蔓延的主因常是因為製造商希望提供客戶更多用途或更想要的產品，以增加產品的銷售及市場佔有率。不過當產品已實現所有設計時提出的功能，製造商剩下的選擇可能就是增加一些非必要的軟體功能，其代價可能是效率的下降；或是固定在某一個版本，代價可能是產品缺乏改善。

另一種特徵蔓延的原因是委員會設計最後決定在同一個產品上實現幾個不同的设计意图，當越多特徵加入以支援某一设计意图時，有些特徵需同時支援幾個设计意图，往往會使产品的设计變得更複雜。

市場考量：產品生命周期及競爭動力

一個產品的生命周期會經過引入、成長、成熟及衰退四個階段。以下用Sony的隨身聽Walkman說明四個階段，有些階段容易出現特徵蔓延的情形。

引入
Sony提出了一個名為Walkman的隨身聽新產品，可播放錄音帶內的音樂，並提供最基本的播放、暫停、快轉、反轉及退出等功能。此時其它潛在競爭者正在觀望，看此產品是否會建立一個值得投資的市場。

成長
在此市場有相當成長時，其它競爭者會進入市場，提供消費者更多的選擇，其差異常常只是價格及廠牌上的差異。

成熟
在成熟期時，競爭者的產品漸漸進入市場，為了創造了價格以外的差異化，競爭者也會導入新的功能（如「自動反轉」、「超重低音立體聲」、「慢跑防震」、「防潑水」等）。開拓者為了防止競爭者產品影響市場佔有率，也會考慮是否要加入新的功能。在這個階段中最容易出現特徵蔓延的情形，因為開拓者及競爭者都希望用「新穎且改進過」的產品來說服消費者購買，以增加銷售量。

在出現特徵蔓延後，當開拓者產品的價格開始因為產品的競爭而下降，是產品生命週期已到達成熟期的有力指標。有些人則認為成熟期是出現在產品的機能已經飽和的時候。

衰退
過時是衰退的主要原因，可能因為時代及技術的進步，市場領導者的技術已不是主流。例如1980年代隨身音樂播放的平台是錄音帶，1990年代是CD，2000年代則是MP3。當主流平台調整時，原來的平台就變得過時。

影响
特征蔓延会导致一系列的后果，包括但不限於使產品遠遠超過當初規劃的範圍，从而导致產品時程增加：

例如在電子遊戲領域，《幕府将军：全面战争》的開發過程中，最初只是設計成戰鬥模擬遊戲The Making of: Shogun: Total War , By Kieron Gillen, August 24th, 2007, Rock, Paper, Shotgun，但後來產品膨脹，產生了一些後遺症。而在操作系統領域，微軟的Windows Vista本來只是Windows XP後的一個小改版，之後再銜接Windows 7，但後來變成大型改版，因此花了五年的開發時間。

特徵蔓延更常見的後果是导致产品成本增加，使產品變的比原來預期的更貴，反而使產品的銷售量下降。特征蔓延也可能結束產品的生命周期。

控制
有許多方式可以控制特徵蔓延：包括嚴格限制可增加的機能、允許產品有多種衍生機種，各變體中有不同的機能、刪除一些過多不必要的機能。

若產品在設計初期就有好的軟體架構，例如機能及資料存取的邏輯分離等作法，可以避免一些開發後期的特徵蔓延。利用嚴格的變更管理，或將變更延後至專案較後期的交付階段也可以有效的控制特徵蔓延。

另一種控制特徵蔓延的方式是讓產品有幾個不同的衍生機種，而新增特徵只在其中部份機種中出現。新特徵持續增加的過程中，系統的資源可能會不敷使用，因此一般會特別維護一個只有基本特徵的核心版本，以確保在系統資源較少時，此版本仍能正常工作。根據80/20法則，80%使用者只會使用到產品的基本特徵，這些使用者用的產品不需被另外20%使用者提出的新特徵所影響。產品仍然可以有新的特徵，只是新的特徵不需放在所有衍生機種中。

有時一些特徵的維護成本高到無法接受的程度，此時刪剪一些不需要的特徵。新版本的產品可能可以直接省略特徵，也有可能在這些特徵完成移除前，需要一段時間進行切換，切換過程中這些特徵會標示為不推荐使用。若此產品有幾個不同的衍生機種，可能其中一些會初逐步淘汰。

相關條目
格林斯潘第十定律

过度设计
範圍蔓延
第二系統效應
软件膨胀
軟體設計文件
KISS原则：設計當中應當注重簡約的原則

插件
Unix哲學

參考資料

Category:反模式
Category:軟體專案管理