Wednesday, May 06, 2009

Feature Creep



Feature creep is the proliferation of features in a product such as computer software. Extra features go beyond the basic function of the product and so can result in baroque over-complication rather than simple, elegant design.

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. However, once the point at which a product does everything that it is expected to do is reached, the manufacturer is left with the choice of adding unneeded functions or sticking with the old product.

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 is an example of this.

Control

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 and by delaying changes to later delivery phases of a project.

Mitigation

  • Design document

  • KISS principle

  • Minimalism

  • Software extension

  • Unix philosophy



No comments: