Software feature

Last updated
"Distress Selection" software feature in the photo editing program GIMP Gimp tutorial speechbubbles17.png
"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 XtermMenus.png
Menu showing a list of available features in the X Window System terminal emulator program xterm

In software, a feature is an identifiable characteristic of a computer program. [1]

Contents

Context

The term feature means the same for software as it does for any kind of system. 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. [2]

Feature also applies to computer hardware. 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. [3] [4]

Feature also applies to concepts such as a programming language. The Python programming language is well-known for its feature of using whitespace characters (spaces and tabs) instead of curly braces to indicate different blocks of code. [5]

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. [6]

The Institute of Electrical and Electronics Engineers (IEEE) defines feature in the (obsolete) standard for software test documentation IEEE 829 as a "distinguishing characteristic of a software item (e.g., performance, portability, or functionality)". [7]

Although feature is typically used for a positive aspect of a software system, a software bug is a also feature but with negative value.

Examples

The terminal emulator xterm has many 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 and feature creep

Feature-rich describes a software system as having many options and capabilities.

One mechanism for introducing 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]

Sometimes, feature-rich is considered a negative attribute. The terms feature creep, software bloat, and featuritis 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]

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

See also

Related Research Articles

<span class="mw-page-title-main">Minicomputer</span> Mid-1960s–late-1980s class of smaller computers

A minicomputer, or colloquially mini, is a type of smaller general-purpose computer developed in the mid-1960s and sold at a much lower price than mainframe and mid-size computers from IBM and its direct competitors. In a 1970 survey, The New York Times suggested a consensus definition of a minicomputer as a machine costing less than US$25,000, with an input-output device such as a teleprinter and at least four thousand words of memory, that is capable of running programs in a higher level language, such as Fortran or BASIC.

<span class="mw-page-title-main">PDP-11</span> Series of 16-bit minicomputers

The PDP–11 is a series of 16-bit minicomputers sold by Digital Equipment Corporation (DEC) from 1970 into the late 1990s, one of a set of products in the Programmed Data Processor (PDP) series. In total, around 600,000 PDP-11s of all models were sold, making it one of DEC's most successful product lines. The PDP-11 is considered by some experts to be the most popular minicomputer.

<span class="mw-page-title-main">VAX</span> Line of computers sold by Digital Equipment Corporation

VAX is a series of computers featuring a 32-bit instruction set architecture (ISA) and virtual memory that was developed and sold by Digital Equipment Corporation (DEC) in the late 20th century. The VAX-11/780, introduced October 25, 1977, was the first of a range of popular and influential computers implementing the VAX ISA. The VAX family was a huge success for DEC, with the last members arriving in the early 1990s. The VAX was succeeded by the DEC Alpha, which included several features from VAX machines to make porting from the VAX easier.

<span class="mw-page-title-main">Terminal emulator</span> Program that emulates a video terminal

A terminal emulator, or terminal application, is a computer program that emulates a video terminal within some other display architecture. Though typically synonymous with a shell or text terminal, the term terminal covers all remote terminals, including graphical interfaces. A terminal emulator inside a graphical user interface is often called a terminal window.

<span class="mw-page-title-main">ANSI escape code</span> Method used for display options on video text terminals

ANSI escape sequences are a standard for in-band signaling to control cursor location, color, font styling, and other options on video text terminals and terminal emulators. Certain sequences of bytes, most starting with an ASCII escape character and a bracket character, are embedded into text. The terminal interprets these sequences as commands, rather than text to display verbatim.

Feature creep is the excessive ongoing expansion or addition of new features in a product, especially in computer software, video games and consumer and business electronics. These extra features go beyond the basic function of the product and can result in software bloat and over-complication, rather than simple design.

<span class="mw-page-title-main">Data General</span> Minicomputer manufacturer, 1968–1999

Data General Corporation was one of the first minicomputer firms of the late 1960s. Three of the four founders were former employees of Digital Equipment Corporation (DEC).

Joseph Frank Ossanna, Jr. was an American electrical engineer and computer programmer who worked as a member of the technical staff at the Bell Telephone Laboratories in Murray Hill, New Jersey. He became actively engaged in the software design of Multics, a general-purpose operating system used at Bell.

<span class="mw-page-title-main">Computer terminal</span> Computer input/output device for users

A computer terminal is an electronic or electromechanical hardware device that can be used for entering data into, and transcribing data from, a computer or a computing system. The teletype was an example of an early-day hard-copy terminal and predated the use of a computer screen by decades. Starting in the mid-1970s with machines such as the Sphere 1, Sol-20, and Apple I, terminal circuitry began to be integrated into personal and workstation computer systems, with the computer handling character generation and outputting to a CRT display such as a computer monitor or, sometimes, a consumer TV.

<span class="mw-page-title-main">Version 7 Unix</span> 1979 minicomputer operating system

Version 7 Unix, also called Seventh Edition Unix, Version 7 or just V7, was an important early release of the Unix operating system. V7, released in 1979, was the last Bell Laboratories release to see widespread distribution before the commercialization of Unix by AT&T Corporation in the early 1980s. V7 was originally developed for Digital Equipment Corporation's PDP-11 minicomputers and was later ported to other platforms.

<span class="mw-page-title-main">Text-based user interface</span> Type of interface based on outputting to or controlling a text display

In computing, text-based user interfaces (TUI), is a retronym describing a type of user interface (UI) common as an early form of human–computer interaction, before the advent of bitmapped displays and modern conventional graphical user interfaces (GUIs). Like modern GUIs, they can use the entire screen area and may accept mouse and other inputs. They may also use color and often structure the display using box-drawing characters such as ┌ and ╣. The modern context of use is usually a terminal emulator.

<span class="mw-page-title-main">Pseudoterminal</span>

In some operating systems, including Unix-like systems, a pseudoterminal, pseudotty, or PTY is a pair of pseudo-device endpoints (files) which establish asynchronous, bidirectional communication (IPC) channel between two or more processes.

xterm Standard terminal emulator for the X Window system

xterm is the standard terminal emulator for the X Window System. It allows users to run programs which require a command-line interface.

Multi-Environment Real-Time (MERT), later renamed UNIX Real-Time (UNIX-RT), is a hybrid time-sharing and real-time operating system developed in the 1970s at Bell Labs for use in embedded minicomputers. A version named Duplex Multi Environment Real Time (DMERT) was the operating system for the AT&T 3B20D telephone switching minicomputer, designed for high availability; DMERT was later renamed Unix RTR.

ALGOL 68C is an imperative computer programming language, a dialect of ALGOL 68, that was developed by Stephen R. Bourne and Michael Guy to program the Cambridge Algebra System (CAMAL). The initial compiler was written in the Princeton Syntax Compiler that was implemented by J. H. Mathewman at Cambridge.

<span class="mw-page-title-main">Version 6 Unix</span> 6th Edition of Research Unix alias UNIX Time-Sharing System

Sixth Edition Unix, also called Version 6 Unix or just V6, was the first version of the Unix operating system to see wide release outside Bell Labs. It was released in May 1975 and, like its direct predecessor, targeted the DEC PDP-11 family of minicomputers. It was superseded by Version 7 Unix in 1978/1979, although V6 systems remained in regular operation until at least 1985.

<span class="mw-page-title-main">History of Unix</span>

The history of Unix dates back to the mid-1960s, when the Massachusetts Institute of Technology, AT&T Bell Labs, and General Electric were jointly developing an experimental time-sharing operating system called Multics for the GE-645 mainframe. Multics introduced many innovations, but also had many problems. Bell Labs, frustrated by the size and complexity of Multics but not its aims, slowly pulled out of the project. Their last researchers to leave Multics – among them Ken Thompson, Dennis Ritchie, Doug McIlroy, and Joe Ossanna – decided to redo the work, but on a much smaller scale.

In computing, minimalism refers to the application of minimalist philosophies and principles in the design and use of hardware and software. Minimalism, in this sense, means designing systems that use the least hardware and software resources possible.

<span class="mw-page-title-main">Ken Thompson</span> American computer scientist, co-creator of the Unix operating system

Kenneth Lane Thompson is an American pioneer of computer science. Thompson worked at Bell Labs for most of his career where he designed and implemented the original Unix operating system. He also invented the B programming language, the direct predecessor to the C programming language, and was one of the creators and early developers of the Plan 9 operating system. Since 2006, Thompson has worked at Google, where he co-developed the Go programming language.

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. S2CID   417250.
  2. "How the Dreadnought sparked the 20th Century's first arms race".
  3. "PDP-7". reference.com Computing Dictionary. Archived from the original on June 16, 2013.
  4. Tore Sinding Bekkedal (2009). "Digital Equipment Corporation PDP-7". soemtron.org.
  5. "PEP 8 – Style Guide for Python Code".
  6. "About Ruby".
  7. IEEE Std. 829-1998
  8. "XTERM - Change Log - Patch #24 - 1996/8/11 - XFree86 3.1.2Ee". Archived from the original on 2001-12-22.
  9. Thomas E. Dickey. "XTerm – Frequently Asked Questions (FAQ), Who wrote XTerm?". Archived from the original on 2018-06-24. Retrieved 2018-06-04.
  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.{{cite book}}: CS1 maint: others (link)
  11. "Featuritis (or creeping featurism)".
  12. Krystallis, Ilias; Locatelli, Giorgio (2022-09-01). "Normalizing White-Collar Wrongdoing in Professional Service Firms". Journal of Management in Engineering. 38 (5): 04022049. doi:10.1061/(ASCE)ME.1943-5479.0001079. hdl: 11311/1228318 . ISSN   1943-5479. S2CID   250326876.
  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.
  14. "The Unix Philosophy".