Software feature

From HandWiki
Short description: Distinguishing characteristic or capability of software
"Distress Selection" software feature in the photo editing program GIMP
Menu showing a list of available features in the X Window System terminal emulator program xterm

In software, the term feature has several definitions, which are often distinct from the more general definitions of the term.[1] The Institute of Electrical and Electronics Engineers (IEEE) defines the term in IEEE 829 (a now-defunct standard for software test documentation) as a "distinguishing characteristic of a software item (e.g., performance, portability, or functionality)".[2]

Background

Even before the advent of electronic computers in the mid-to-late 20th century, a device having distinguishing features was often considered important. For example, the British Royal Navy's HMS Dreadnought (1906) was considered an important milestone in naval technology because of its advanced features that did not exist in pre-dreadnought battleships.[3]

In the early history of computers, devices such as Digital Equipment Corporation's PDP-7 minicomputer (created in 1964) was noted for having a wealth of features, such as being the first version of the PDP minicomputer series to use wire wrap, as well as being the first to use the proprietary DEC Flip-Chip module which was invented in the same year.[4][5]

Examples

The Python programming language is well-known for its feature of using whitespace characters such as spaces and tabs instead of curly braces to indicate different blocks of code.[6] Another similar high-level, object oriented programming language, Ruby, is noteworthy for using the symbols "@" and "$" to highlight different variable scopes, which the developers claim improves code readability. Its developers also claim that one of its important features is a high amount of flexibility.[7]

In the context of end-user software, the terminal emulator xterm also has a significant quantity of notable features, including compatibility with the X Window System, the ability to emulate a VT220 and VT320[8] terminal with ANSI color, and the ability to input escape sequences using a computer mouse or other similar device, and the ability to run on multiple different Unix-like operating systems (e.g. Linux, AIX, BSD, and HP-UX).[9]

Feature-rich software and feature creep

A piece of software is said to be "feature-rich" when it has many options and functional capabilities available to the user. One popular mechanism for introduction feature-rich software to the user is the concept of progressive disclosure, a technique where features are introduced gradually as they become required, to reduce the potential confusion caused by displaying a wealth of features at once.[10]

In some cases, a piece of software being feature-rich can be considered a negative attribute. The terms feature creep, software bloat, and featuritis (a reference to the common usage of the suffix -itis to refer to an inflammatory disease) can be used to refer to software that is overly feature-rich.[11] This type of excessive inclusion of features is in some cases a result of design by committee.[12]

In order to counteract the tendency of software developers to add additional, unnecessary features, the Unix philosophy was developed in the 1970s by Bell Labs employees who were working on the Unix operating system such as Ken Thompson and Dennis Ritchie. The Unix philosophy can be summarized as stating that software programs should generally only complete one primary task and that "small is beautiful".[13][14]

See also

References

  1. Apel, Sven; Kästner, Christian (August 2009). "An Overview of Feature-Oriented Software Development". The Journal of Object Technology 8 (5): 49-84. doi:10.5381/jot.2009.8.5.c5. http://www.jot.fm/issues/issue_2009_07/column5/. 
  2. IEEE Std. 829-1998
  3. "How the Dreadnought sparked the 20th Century's first arms race". https://www.bbc.com/news/magazine-27641717. 
  4. "PDP-7". reference.com Computing Dictionary. https://dictionary.reference.com/browse/PDP-7. 
  5. Tore Sinding Bekkedal (2009). "Digital Equipment Corporation PDP-7". https://www.soemtron.org/pdp7.html. 
  6. "PEP 8 – Style Guide for Python Code". https://peps.python.org/pep-0008/. 
  7. "About Ruby". https://www.ruby-lang.org/en/about/. 
  8. "XTERM - Change Log - Patch #24 - 1996/8/11 - XFree86 3.1.2Ee". http://invisible-island.net/xterm/xterm.log.html#xterm_24. 
  9. Thomas E. Dickey. "XTerm – Frequently Asked Questions (FAQ), Who wrote XTerm?". https://invisible-island.net/xterm/xterm.faq.html#who_did_it. 
  10. User centered system design: new perspectives on human-computer interaction. Norman, Donald A., Draper, Stephen W.. Hillsdale, N.J.: L. Erlbaum Associates. 1986. ISBN 0-89859-781-1. OCLC 12665902. https://www.worldcat.org/oclc/12665902. 
  11. "Featuritis (or creeping featurism)". https://www.interaction-design.org/literature/book/the-glossary-of-human-computer-interaction/featuritis-or-creeping-featurism. 
  12. Krystallis, Ilias; Locatelli, Giorgio (2022-09-01). "Normalizing White-Collar Wrongdoing in Professional Service Firms" (in EN). Journal of Management in Engineering 38 (5): 04022049. doi:10.1061/(ASCE)ME.1943-5479.0001079. ISSN 1943-5479. https://ascelibrary.org/doi/10.1061/%28ASCE%29ME.1943-5479.0001079. 
  13. Doug McIlroy; E. N. Pinson; B. A. Tague (8 July 1978). "Unix Time-Sharing System: Foreword". The Bell System Technical Journal (Bell Laboratories): 1902–1903. https://archive.org/details/bstj57-6-1899/mode/2up. 
  14. "The Unix Philosophy". https://www.linuxjournal.com/article/2877. 

External links