Creeping featurism
Encyclopedia
Feature creep, creeping featurism or featureitis is the ongoing expansion or addition of new features in a product, such as in computer software
Computer software
Computer software, or just software, is a collection of computer programs and related data that provide the instructions for telling a computer what to do and how to do it....

. Extra features go beyond the basic function of the product and so can result in over-complication rather than simple design. Viewed over a longer time period, extra or unnecessary features seem to creep into the system, beyond the initial goals.

Causes

The most common cause of feature creep is the desire to provide the consumer with a more useful or desirable product, in order to increase sales or distribution. However, once the product reaches the point at which it does everything that it is designed to do, the manufacturer is left with the choice of adding unneeded functions, sometimes at the cost of efficiency, or sticking with the old version, at the cost of a perceived lack of improvement.

Another major cause of feature creep might be a compromise from a committee
Design by committee
Design by committee is a term referring to a style of design and its resultant output when a group of entities comes together to produce something , particularly in the presence of poor leadership...

 which decides to implement multiple, different viewpoints in the same product. Then, as more features are added to support each viewpoint, it might be necessary to have cross-conversion features between the multiple viewpoints, further complicating the total features.

Characteristics

Feature creep is the most common source of cost and schedule overruns. It thus endangers and can even kill products and projects. Apple's abandoned Copland operating system
Copland (operating system)
Copland was a project at Apple Computer to create an updated version of the Macintosh operating system. It was to have introduced protected memory, preemptive multitasking and a number of new underlying operating system features, yet still be compatible with existing Mac software...

 is an example of this.

Control

There are several methods to control feature creep, including: strict limits for allowable features; multiple variations, and pruning excess features.

Temptation of later feature creep may be avoided to some degree by basing initial design on strong software fundamentals, such as logical separation of functionality and data access. It can be actively controlled with rigorous change management
Change management
Change management is a structured approach to shifting/transitioning individuals, teams, and organizations from a current state to a desired future state. It is an organizational process aimed at helping employees to accept and embrace changes in their current business environment....

 and by delaying changes to later delivery phases of a project.

Another method of controlling feature creep is to maintain multiple variations of products, where features are kept limited in some variations. Because the ever-growing, ever-expanding addition of new features might exceed available resources, a minimal core "basic" version of a product can be maintained separately, to ensure operation in smaller operating environments. Using the "80/20 Rule" the more basic product variations might support the needs of about "80%" of the users, so they would not be subjected to the complexity (or extra expense) of features requested by the other 20% of users. The extra features are still available, but they have not crept into all versions of the products.

At some point, the cost of maintaining a particular subset of features might become prohibitive, and pruning can be used. A new product version could simply omit the extra features, or perhaps a transition period would be used, where old features were deprecated before eventual removal from the system. If there are multiple variations of products, then some of them might be phased out of use.

Consequences

Occasionally, uncontrolled feature creep can lead to products far beyond the scope of what was originally intended. For example, the video game The Elder Scrolls: Arena
The Elder Scrolls: Arena
The Elder Scrolls: Arena is the first game in the Elder Scrolls series. It is a first-person computer role-playing game for MS-DOS, developed by Bethesda Softworks and released in 1994...

was originally intended to be a "medieval style gladiator game", however due to feature creep the game quickly expanded into a very large open role-playing game
Role-playing game
A role-playing game is a game in which players assume the roles of characters in a fictional setting. Players take responsibility for acting out these roles within a narrative, either through literal acting, or through a process of structured decision-making or character development...

, spawning several sequels. Another example of this is the game Shogun: Total War
Shogun: Total War
Shogun: Total War is a turn-based strategy and real-time tactics computer game developed by The Creative Assembly and published by Electronic Arts. Released in June 2000, the game is the debut title in The Creative Assembly's Total War series...

,
which was originally intended to be simply a "B-grade" combat simulation game, but also expanded to produce multiple sequels. Microsoft's Windows Vista
Windows Vista
Windows Vista is an operating system released in several variations developed by Microsoft for use on personal computers, including home and business desktops, laptops, tablet PCs, and media center PCs...

 was planned to be a minor release between Windows XP and then the codenamed Windows "Blackcomb" (Windows 7), but it turned out to become a major release which took 5 years of development. However, a more common consequence of feature creep is to produce the cancellation of the product, which almost invariably becomes more expensive than was originally intended.

Related concepts

  • Greenspun's tenth rule
    Greenspun's Tenth Rule
    Greenspun's tenth rule of programming is an aphorism in computer programming and especially programming language circles that states:This expresses the opinion that the perceived flexibility and extensibility designed into the Lisp programming language includes all functionality that is...

  • Mission creep
    Mission creep
    Mission creep is the expansion of a project or mission beyond its original goals, often after initial successes. Mission creep is usually considered undesirable due to the dangerous path of each success breeding more ambitious attempts, only stopping when a final, often catastrophic, failure occurs...

  • Overengineering
    Overengineering
    Overengineering is when a product is more robust or complicated than necessary for its application, either to ensure sufficient factor of safety, sufficient functionality, or due to design errors...

  • Scope creep
    Scope creep
    Scope Creep in project management refers to uncontrolled changes or continuous growth in a project's scope. This phenomenon can occur when the scope of a project is not properly defined, documented, or controlled...

  • Second-system effect
    Second-system effect
    The second-system effect refers to the tendency of small, elegant, and successful systems to have elephantine, feature-laden monstrosities as their successors. The term was first used by Fred Brooks in his classic The Mythical Man-Month...

  • Software bloat
    Software bloat
    Software bloat is a process whereby successive versions of a computer program include an increasing proportion of unnecessary features that are not used by end users, or generally use more system resources than necessary, while offering little or no benefit to its users.-Causes:Software developers...


Mitigation

  • Design document
    Design document
    A software design document is a written description of a software product, that a software designer writes in order to give a software development team an overall guidance of the architecture of the software project. An SDD usually accompanies an architecture diagram with pointers to detailed...

  • KISS principle
    KISS principle
    KISS is an acronym for the design principle Keep it simple, Stupid!. Other variations include "keep it simple and stupid", "keep it short and simple", "keep it simple sir", "keep it simple or be stupid" or "keep it simple and straightforward"...

  • Minimalism
  • Plug-in (computing)
  • Unix philosophy
    Unix philosophy
    The Unix philosophy is a set of cultural norms and philosophical approaches to developing software based on the experience of leading developers of the Unix operating system.-McIlroy: A Quarter Century of Unix:...


External links

The source of this article is wikipedia, the free encyclopedia.  The text of this article is licensed under the GFDL.
 
x
OK