版权归原作者所有,如有侵权,请联系我们

[科普中国]-特征蔓延

科学百科
原创
科学百科为用户提供权威科普内容,打造知识科普阵地
收藏

特征蔓延(Feature creep)是指一产品(像计算机软件)的功能持续膨胀或增加的情形。产品基本功能以外的扩充功能,会使产品比原始设计要更复杂。长时间来看,额外或不需要的功能慢慢的进入系统中,使系统超出原来设定的目标。特征蔓延是产品成本及时间增加的常见原因之一。特征蔓延会造成危害,甚至可能会结束一个产品及专案。

定义在软件项目中,项目范围蔓延和特征蔓延是项目失败的主要原因,范围蔓延是指在集成变更管理过程控制下实际发生的、必需的、更正性或预防性的变动,而没有经过控制就发生的范围变更1。特征蔓延是指不受控制地增加技术特征和外观特征到一个软件项目中。特征蔓延的主因常是因为制造商希望提供客户更多用途或更想要的产品,以增加产品的销售及市场占有率。不过当产品已实现所以设计时提出的所有机能,制造商剩下的选择可能就是增加一些不一定需要的软件机能,其代价可能是效率的下降,或是固定在某一个版本,代价可能是缺乏改善的产品。另一种特征蔓延的原因是委员会设计最后决定在同一个产品上实现几个不同的观点,当越多特征加入以支援某一观点时,有些特征需同时支援几个观点,往往会使整个的特点变得更复杂。

产品的生命周期一个产品的生命周期会经过引入、成长、成熟及衰退四个阶段。以下用Sony的随身听Walkman说明四个阶段,有些阶段容易出现特征蔓延的情形。

引入

Sony提出了一个名为Walkman的随身听新产品,可播放录音带内的音乐,并提供最基本的播放、暂停、快转、反转及退出等机能。此时竞争者正在观望,看此产品是否会建立一个值得投资的市场。

成长

在此市场有相当成长时,竞争者会进入市场,提供消费者更多的选择,其差异常常只是价格及厂牌上的差异。

成熟

在成熟期时,竞争者的产品渐渐进入市场,为了创造了价格以外的差异化,竞争者也会导入新的机能(如“自动反转”、“超重低音立体声”、“慢跑防震”、“防泼水”等)。开拓者为了防止竞争者产品影响市场占有率,也会考虑是否要加入新的机能。在这个阶段中最容易出现特征蔓延的情形,因为开拓者及竞争者都希望用“新颖且改进过”的产品来说服消费者购买,以增加销售量。在出现特征蔓延后,当开拓者产品的价格开始因为产品的竞争而下降,是产品生命周期已到达成熟期的有力指标。有些人则认为成熟期是在产品的功能已经饱和的时候出现。

衰退

过时是衰退的主要原因,可能因为时代及技术的进步,市场领导者的技术已不是主流。例如1980年代随身音乐播放的平台是录音带,1990年代是CD,2000年代则是MP3。当主流平台调整时,原来的平台就变得过时。

控制有许多方式可以控制特征蔓延:包括严格限制可增加的机能、允许产品有多种衍生机种,各变体中有不同的机能、删除一些过多不必要的机能。

若产品在设计初期就有好的软件架构,例如机能及资料存取的逻辑分离等作法,可以避免一些开发后期的特征蔓延。利用严格的变更管理,或将变更延后至专案较后期的交付阶段也可以有效的控制特征蔓延。

另一种控制特征蔓延的方式是让产品有几个不同的衍生机种,而新增特征只在其中部分机种中出现。新特征持续增加的过程中,系统的资源可能会不敷使用,因此一般会特别维护一个只有基本特征的核心版本,以确保在系统资源较少时,此版本仍能正常工作。根据80/20法则,80%使用者只会使用到产品的基本特征,这些使用者用的产品不需被另外20%使用者提出的新特征所影响。产品仍然可以有新的特征,只是新的特征不需放在所有衍生机种中。有时一些特征的维护成本高到无法接受的程度,此时删剪一些不需要的特征。新版本的产品可能可以直接省略特征,也有可能在这些特征完成移除前,需要一段时间进行切换,切换过程中这些特征会标示为不推荐使用。若此产品有几个不同的衍生机种,可能其中一些会初逐步淘汰。

有时失控的特征蔓延会使产品远远超过当初规划的范围。例如《幕府将军:全面战争》一开始只是设计成战斗模拟游戏,但后来产品膨胀,产生了一些后遗症。微软的Windows Vista本来只是Windows XP后的一个小改版,之后再衔接Windows 7,但后来变成大型改版,因此花了五年的开发时间。特征蔓延更常见的后果是使产品变的比原来预期的更贵,因此反而使产品的销售量下降,或是结束产品的生命周期。

范围蔓延范围蔓延,是指项目范围变更失控,项目目标远超计划的现象。项目的范围、时间、成本三个要素被称之为项目三角形,这三个要素对项目的成功有着很大的影响。范围蔓延通常会造成项目工期延长、成本增加,同时团队成员情绪低落、冲突加剧,产品质量下降,严重的范围蔓延甚至会导致项目失败。在软件项目中,由于需求获取相对困难、客户对软件项目不了解等原因,所以会更容易出现范围蔓延现象,这也是软件项目实施成功率不高的重要原因之一。

本词条内容贡献者为:

李岳阳 - 副教授 - 江南大学