Computer software

(Redirected from Software)

Image:ScreenHunter 001.JPG
A screenshot of computer software in action.

Computer software (or simply software) is essentially a computer program encoded in such a fashion that the program (the instruction set) contents can be changed with minimal effort. Computer software can have various functions such as controlling hardware, performing computations, communication with other software, human interaction, etc; all of which are prescribed in the program.

The term "software" was first used in this sense by John W. Tukey in 1957; computer science and software engineering, computer software is all information processed by computer systems, programs and data. The concept of software was first proposed by Alan Turing in an essay.

Contents

Relationship to hardware

Computer software is so called in contrast to computer hardware, which is the physical substrate which stores and executes (or "runs") the software.

Software has historically been considered an intermediary between electronic hardware and data, which the hardware processes in some manner, according to instructions defined by the software. More specifically it has been considered to be a conceptual interface composed of a binary representation of electronics-readable code or logic. The purpose of software is to cause a task, process, or computation to be performed. A task can include the retrieval, storage, or display of information, or the transformation of data from one form to another.

As computational science becomes increasingly complex, the distinction between software and data becomes less precise. Data has generally been considered to be either the output of or input for software (n.b. that "data" is not the only possible output or input; for example, configuration information can also be considered input, though not necessarily considered to be data). The output of a particular piece of software may be the input for another piece of software. Therefore, software may be considered to be an interface between hardware, data, or software.

It is generally accepted that software interfaces with electronic devices, or electronics. The terms electronics recently can be defined to include devices which have biological components or biological interfaces. Instructions processed by an electronic device which cause a muscle to contract, for example, may be considered software. The instruction from the electronic device to the muscle may also be considered software because it is the output, a task, of electronics readable code or logic.

System, application and programming software

Practical computer systems divide software into three major classes: system software, application software and programming software, although the distinction is somewhat arbitrary, and often blurred.

System software helps run the computer hardware and computer system. It includes operating systems, device drivers, diagnostic tools, servers, windowing systems, utilities and more.
Application software allows a user to accomplish one or more specific tasks. Typical applications include office suites, business software, educational software, databases and computer games. Most application software has a graphical user interface (GUI).
Programming software usually provides some useful tools to help programmer to write computer programs and software using different programming language in a more convenient way. The tools include text editor, compiler, interpreter, linker, debugger, and so on. Integrated development environment (IDE) merges those tools in a software bundle, and programmer may not need to type a lot of commands for compiling, interpreter, debugging, tracing, and etc., because IDE mostly has a GUI.

Software program and library

Software program is usually the directly executable part of a software. Software libraries are software components that are used by stand-alone programs, but which cannot be executed on their own.

Users see three layers of software

Users often see things differently than programmers. People who use modern general purpose computers (as opposed to embedded systems) usually see three layers of software performing a variety of tasks: platform, application, and user software.

Platform software 
Platform includes the basic input-output system (often described as firmware rather than software), device drivers, an operating system, and typically a graphical user interface which, in total, allow a user to interact with the computer and its peripherals (associated equipment). Platform software often comes bundled with the computer, and users may not realize that it exists or that they have a choice to use different platform software.
Application software 
Application software or Applications are what most people think of when they think of software. Typical examples include office suites and video games. Application software is often purchased separately from computer hardware. Sometimes applications are bundled with the computer, but that does not change the fact that they run as independent applications. Applications are almost always independent programs from the operating system, though they are often tailored for specific platforms. Most users think of compilers, databases, and other "system software" as applications.
User-written software 
User software tailors systems to meet the users specific needs. User software include spreadsheet templates, word processor macros, scientific simulations, graphics and animation scripts. Even email filters are a kind of user software. Users create this software themselves and often overlook how important it is.

See also: Software architecture.

Software creation

Look back to Computer software#System, application and programming software

Software operation

Computer software has to be "loaded" into the computer's storage (also known as memory and RAM).

Once the software is loaded, the computer is able to operate the software. Computers operate by executing the computer program. This involves passing instructions from the application software, through the system software, to the hardware which ultimately receives the instruction as machine code. Each instruction causes the computer to carry out an operation -- moving data, carrying out a computation, or altering the flow of instructions.

Kinds of software by operation: computer program as executable, source code or script, configuration.

Software quality and reliability

Software reliability considers the errors, faults, and failures related to the creation and operation of software.

See Software quality, Software testing, and Software reliability.

Software patents

The issue of software patents is very controversial, since while patents protect the ideas of "inventors", they are widely believed to hinder software development.

See also


Related External Links

  1. List of analyst firms tracking software - over 430 firms in Free Analyst Directory
Debate
  • Forum Debate a lively and informative ongoing debate over open vs. closed systems, standards, and formats and the OpenDocument format (ODF)af:Sagteware

bg:Софтуер ca:Programari cs:Software da:Computerprogram de:Software et:Tarkvara es:Programa informático eo:Programaro fa:نرم‌افزار fr:Logiciel gl:Programa informático ko:컴퓨터 소프트웨어 hi:सोफ्टवेर hr:Softver id:Perangkat lunak it:Software he:תוכנה ku:Nivîsbarî lv:Programmatūra lt:Programinė įranga hu:Szoftver nl:Software nds:Software ja:ソフトウェア no:Dataprogram pl:Oprogramowanie pt:Software ro:Software ru:Программное обеспечение simple:Software sl:Programska oprema sv:Programvara tl:Software tt:Sanaq programı th:ซอฟต์แวร์ vi:Phần mềm uk:Програмне забезпечення zh:软件