All Topics  
Computer software

 
Computer Software

   Email Print
   Bookmark   Link






 

Computer software



 
 
Computer software, or just software is a general term used to describe a collection of computer program
Computer program

Computer programs are Instruction for a computer. A computer requires programs to function. Moreover, a computer program does not run unless its instructions are executed by a Central processing unit; however, a program may communicate an Algorithm#Formalization of algorithms to people without running....
s, procedures
Algorithm

In mathematics, computing, linguistics and related subjects, an algorithm is a sequence of finite instructions, often used for calculation and data processing....
 and documentation
Software documentation

Software documentation or source code documentation is written text that accompanies computer software. It either explains how it operates or how to use it, and may mean different things to people in different roles....
 that perform some tasks on a computer system.

The term includes:

Software includes websites, program
Computer program

Computer programs are Instruction for a computer. A computer requires programs to function. Moreover, a computer program does not run unless its instructions are executed by a Central processing unit; however, a program may communicate an Algorithm#Formalization of algorithms to people without running....
s, video games etc. that are coded by programming language
Programming language

A programming language is a machine-readable artificial language designed to express computations that can be performed by a machine, particularly a computer....
s like C
C (programming language)

C is a general-purpose computer programming language originally developed in 1972 by Dennis Ritchie at the Bell Telephone Laboratories to implement the Unix operating system....
, C++
C++

C++ is a general-purpose programming language. It is regarded as a middle-level language, as it comprises a combination of both high-level programming language and low-level programming language language features....
, etc.

"Software" is sometimes used in a broader context to mean anything which is not hardware but which is used with hardware, such as film, tapes and records.

uter software are often regarded as anything but hardware
Hardware

Hardware is a general term that refers to the physical cultural artifacts of a technology. It may also mean the physical components of a computer system, in the form of computer hardware....
, meaning that the "hard" are the parts that are tangible while the "soft" part is the intangible objects inside the computer.






Discussion
Ask a question about 'Computer software'
Start a new discussion about 'Computer software'
Answer questions from other users
Full Discussion Forum



Encyclopedia


Computer software, or just software is a general term used to describe a collection of computer program
Computer program

Computer programs are Instruction for a computer. A computer requires programs to function. Moreover, a computer program does not run unless its instructions are executed by a Central processing unit; however, a program may communicate an Algorithm#Formalization of algorithms to people without running....
s, procedures
Algorithm

In mathematics, computing, linguistics and related subjects, an algorithm is a sequence of finite instructions, often used for calculation and data processing....
 and documentation
Software documentation

Software documentation or source code documentation is written text that accompanies computer software. It either explains how it operates or how to use it, and may mean different things to people in different roles....
 that perform some tasks on a computer system.

The term includes:
  • Application software
    Application software

    Application software is any tool that functions and is operated by means of a computer, with the purpose of supporting or improving the software user 's work....
     such as word processor
    Word processor

    A word processor is a computer Application software used for the production of any sort of printable material.Word processor may also refer to an obsolete type of stand-alone office machine, popular in the 1970s and 80s, combining the keyboard text-entry and printing functions of an electric typewriter with a dedicated computer for th...
    s which perform productive tasks for users.
  • Firmware
    Firmware

    Firmware is a term sometimes used to denote the fixed, usually rather small, programs that internally control various electronic devices. Typical examples range from end user products such as remote controls or calculators, via computer parts and devices like harddisks, keyboard s, TFT screens or memory cards, all the way to scientific instr...
     which is software programmed resident to electrically programmable memory devices on board mainboards or other types of integrated hardware carriers.
  • Middleware
    Middleware

    Middleware is computer software that connects software components or applications. The software consists of a set of enabling services that allow multiple processes running on one or more machines to interact across a network....
     which controls and co-ordinates distributed systems
    Distributed computing

    Distributed computing deals with hardware and software systems containing more than one processing element or Computer data storage element, Concurrent computing processes, or multiple programs, running under a loosely or tightly controlled regime....
    .
  • System software
    System software

    System software is closely related to, but distinct from Operating System software. It is any computer software that provides the infrastructure over which programs can operate, i.e....
     such as operating system
    Operating system

    An operating system is an interface between hardware and applications; it is responsible for the management and coordination of activities and the sharing of the limited resources of the computer....
    s, which interface with hardware
    Hardware

    Hardware is a general term that refers to the physical cultural artifacts of a technology. It may also mean the physical components of a computer system, in the form of computer hardware....
     to provide the necessary services for application software.
  • Software Testing
    Software testing

    Software Testing is an empirical investigation conducted to provide stakeholders with information about the quality of the product or service under test , with respect to the context in which it is intended to operate....
     is a domain independent of development and programming. It consists of various methods to test and declare a software product fit before it can be launched for use by either an indivudual or a group. Many tests on functionality, performance and appearance are conducted by modern testers with various tools such as QTP, Load runner, Black box testing etc to edit a checklist of requirements against the developed code. ISTQB is a certification that is in demand for engineers who want to pursue a career in testing.
  • Testware
    Testware

    Generally speaking, Testware is a sub-set of software with a special purpose, that is, for software testing, especially for software testing automation....
     which is an umbrella term
    Umbrella term

    An umbrella term is a word that provides a superset or wikt:grouping of related concepts, also called a hypernym.For example, cryptology is an umbrella term that encompasses cryptography and cryptanalysis, among other fields....
     or container term for all utilities
    Utility

    In economics, utility is a measure of the relative satisfaction from, or desirability of, consumption of various goods and services. Given this measure, one may speak meaningfully of increasing or decreasing utility, and thereby explain economic behavior in terms of attempts to increase one's utility....
     and application software that serve in combination for testing a software package
    Software package (programming)

    A software package is used in object-oriented programming to name a group of related class es of a program. Packages are useful to measure and control the inherent coupling of a program....
     but not necessarily may optionally contribute to operational
    Business operations

    Business operations are those ongoing recurring activities involved in the running of a business for the purpose of producing Value for the Stakeholder s....
     purposes. As such, testware is not a standing configuration but merely a working environment for application software or subset
    Subset

    In mathematics, especially in set theory, a Set A is a subset of a set B if A is "contained" inside B. Notice that A and B may coincide....
    s thereof.


Software includes websites, program
Computer program

Computer programs are Instruction for a computer. A computer requires programs to function. Moreover, a computer program does not run unless its instructions are executed by a Central processing unit; however, a program may communicate an Algorithm#Formalization of algorithms to people without running....
s, video games etc. that are coded by programming language
Programming language

A programming language is a machine-readable artificial language designed to express computations that can be performed by a machine, particularly a computer....
s like C
C (programming language)

C is a general-purpose computer programming language originally developed in 1972 by Dennis Ritchie at the Bell Telephone Laboratories to implement the Unix operating system....
, C++
C++

C++ is a general-purpose programming language. It is regarded as a middle-level language, as it comprises a combination of both high-level programming language and low-level programming language language features....
, etc.

"Software" is sometimes used in a broader context to mean anything which is not hardware but which is used with hardware, such as film, tapes and records.

Overview

Computer software are often regarded as anything but hardware
Hardware

Hardware is a general term that refers to the physical cultural artifacts of a technology. It may also mean the physical components of a computer system, in the form of computer hardware....
, meaning that the "hard" are the parts that are tangible while the "soft" part is the intangible objects inside the computer. Software encompasses an extremely wide array of products and technologies developed using different techniques like programming languages, scripting languages or even microcode
Microcode

Microcode is a layer of lowest-level instructions involved in the implementation of machine code instructions in many computers and other processors; it resides in a special high-speed memory and translates machine instructions into sequences of detailed circuit-level operations....
 or a FPGA
Field-programmable gate array

A field-programmable gate array is a semiconductor device that can be configured by the customer or designer after manufacturing—hence the name "field-programmable"....
 state. The types of software include web pages developed by technologies like HTML
HTML

HTML, an Acronym and initialism of HyperText Markup Language, is the predominant markup language for Web pages. It provides a means to describe the structure of text-based information in a document?by denoting certain text as links, headings, paragraphs, lists, and so on?and to supplement that text with interactive forms, embedded '...
, PHP
PHP

PHP is a scripting language originally designed for producing dynamic web pages. It has evolved to include a command line interface capability and can be used in Standalone software Graphical user interface....
, Perl
Perl

In computer programming, Perl is a high-level programming language, List of programming languages by category, Interpreter , dynamic programming language....
, JSP
JavaServer Pages

JavaServer Pages is a Java technology that allows software developers to create dynamic web page, with HTML, XML, or other document types, in response to a Web client request....
, ASP.NET
ASP.NET

ASP.NET is a web application framework developed and marketed by Microsoft to allow programmers to build dynamic web sites, web applications and web services....
, XML, and desktop applications like Microsoft Word
Microsoft Word

Microsoft Word is Microsoft's word processor computer software. It was first released in 1983 under the name Multi-Tool Word for Xenix systems....
, OpenOffice developed by technologies like C
C (programming language)

C is a general-purpose computer programming language originally developed in 1972 by Dennis Ritchie at the Bell Telephone Laboratories to implement the Unix operating system....
, C++
C++

C++ is a general-purpose programming language. It is regarded as a middle-level language, as it comprises a combination of both high-level programming language and low-level programming language language features....
, Java
Java (programming language)

Java is a programming language originally developed by James Gosling at Sun Microsystems and released in 1995 as a core component of Sun Microsystems' Java ....
, C#, etc. Software usually runs on an underlying software operating system
Operating system

An operating system is an interface between hardware and applications; it is responsible for the management and coordination of activities and the sharing of the limited resources of the computer....
s such as the Microsoft Windows
Microsoft Windows

Microsoft Windows is a series of software operating systems and graphical user interfaces produced by Microsoft. Microsoft first introduced an operating environment named Windows in November 1985 as an add-on to MS-DOS in response to the growing interest in graphical user interfaces ....
 or Linux
Linux

Linux is a generic term referring to Unix-like computer operating systems based on the Linux kernel. Their development is one of the most prominent examples of free and open source software collaboration; typically all the underlying source code can be used, freely modified, and redistributed by anyone under the terms of the GNU GPL license...
. Software also includes video games and the logic
Logic

Logic is the study of the principles of valid demonstration and inference. Logic is a branch of philosophy, a part of the classical Trivium . The word derives from Greek language ?????? , fem....
 systems of modern consumer devices such as automobile
Automobile

An automobile or motor car is a wheeled motor vehicle for transportation passengers, which also carries its own car engine or motor. Most definitions of the term specify that automobiles are designed to run primarily on roads, to have seating for one to eight people, to typically have four wheels, and to be constructed principally f...
s, television
Television

Television is a widely used telecommunication mass-media for transmitting and receiving moving , either monochrome or color, usually accompanied by sound....
s, toasters, etc.

Relationship to computer hardware

Computer
Computer

A computer is a machine that manipulates Data according to a list of Code .The first devices that resemble modern computers date to the mid-20th century , although the computer concept and various machines similar to computers existed earlier....
 software is so called to distinguish it from computer hardware
Computer hardware

A personal computer is made up of computer hardware, multiple physical components onto which can be loaded into a multitude of software that perform the functions of the computer....
, which encompasses the physical interconnections and devices required to store and execute (or run) the software. At the lowest level, software consists of a machine language specific to an individual processor. A machine language consists of groups of binary values signifying processor instructions which change the state of the computer from its preceding state. Software is an ordered sequence of instructions for changing the state of the computer hardware in a particular sequence. It is usually written in high-level programming language
High-level programming language

In computing, a high-level programming language is a programming language with strong Abstraction from the details of the computer. In comparison to low-level programming languages, it may use natural language elements, be easier to use, or more Porting across platforms....
s that are easier and more efficient for humans to use (closer to natural language
Natural language

In the philosophy of language, a natural language is a language that is spoken, Sign language, or writing by humans for general-purpose communication, as distinguished from formal languages and from constructed languages....
) than machine language. High-level languages are compiled
Compiler

A compiler is a computer program that transforms source code written in a programming language into another computer language . The most common reason for wanting to transform source code is to create an executable program....
 or interpreted
Interpreter (computing)

In computer science, an interpreter normally means a computer program that execution , i.e. performs, instructions written in a programming language....
 into machine language object code. Software may also be written in an assembly language
Assembly language

An assembly language is a low-level language for programming computers. It implements a symbolic representation of the numeric machine codes and other constants needed to program a particular CPU architecture....
, essentially, a mnemonic representation of a machine language using a natural language alphabet. Assembly language must be assembled into object code via an assembler
Assembly language

An assembly language is a low-level language for programming computers. It implements a symbolic representation of the numeric machine codes and other constants needed to program a particular CPU architecture....
.

The term "software" was first used in this sense by John W. Tukey in 1958. In computer science
Computer science

Computer science is the study of the theoretical foundations of information and computation, and of practical techniques for their implementation and application in computer systems....
 and software engineering
Software engineering

Software engineering is the application of a systematic, disciplined, quantifiable approach to the development, operation, and maintenance of software, and the study of these approaches....
, computer software is all computer programs. The theory that is the basis for most modern software was first proposed by Alan Turing
Alan Turing

Alan Mathison Turing, Order of the British Empire, Fellow of the Royal Society was a British mathematician, logician and Cryptanalysis....
 in his 1935 essay Computable numbers with an application to the Entscheidungsproblem.

Types of software



Practical computer systems divide software system
Software system

A software system is a system based on software forming part of a computer system . The term software system is often used as a synonym of computer program or software....
s into three major classes: system software
System software

System software is closely related to, but distinct from Operating System software. It is any computer software that provides the infrastructure over which programs can operate, i.e....
, programming software and application software
Application software

Application software is any tool that functions and is operated by means of a computer, with the purpose of supporting or improving the software user 's work....
, although the distinction is arbitrary, and often blurred.

System software

System software
System software

System software is closely related to, but distinct from Operating System software. It is any computer software that provides the infrastructure over which programs can operate, i.e....
 helps run the computer hardware
Computer hardware

A personal computer is made up of computer hardware, multiple physical components onto which can be loaded into a multitude of software that perform the functions of the computer....
 and computer system. It includes:
  • device driver
    Device driver

    In computing, a device driver or software driver is a computer program allowing higher-level computer programs to interact with a hardware device....
    s,
  • operating system
    Operating system

    An operating system is an interface between hardware and applications; it is responsible for the management and coordination of activities and the sharing of the limited resources of the computer....
    s,
  • server
    Server (computing)

    A server is a computer program that provides services to other computer programs , in the same or other computer. The physical computer that runs a server program is also often referred to as server....
    s,
  • utilities,
  • windowing system
    Windowing system

    A windowing system is a component of a graphical user interface , and more specifically of a desktop environment, which supports the implementation of window managers, and provides basic support for graphics hardware, pointing devices such as mice, and keyboards....
    s,
(these things need not be distinct)

The purpose of systems software is to unburden the applications programmer from the details of the particular computer complex being used, including such accessory devices as communications, printers, readers, displays, keyboards, etc. And also to partition the computer's resources such as memory and processor time in a safe and stable manner.

Programming software

Programming software usually provides tools to assist a programmer
Programmer

A programmer is someone who writes computer software. The term computer programmer can refer to a specialist in one area of computer programming or to a generalist who writes code for many kinds of software....
 in writing computer program
Computer program

Computer programs are Instruction for a computer. A computer requires programs to function. Moreover, a computer program does not run unless its instructions are executed by a Central processing unit; however, a program may communicate an Algorithm#Formalization of algorithms to people without running....
s, and software using different programming language
Programming language

A programming language is a machine-readable artificial language designed to express computations that can be performed by a machine, particularly a computer....
s in a more convenient way. The tools include:
  • compiler
    Compiler

    A compiler is a computer program that transforms source code written in a programming language into another computer language . The most common reason for wanting to transform source code is to create an executable program....
    s,
  • debugger
    Debugger

    A debugger is a computer program that is used to test and debug other programs. The code to be examined might alternatively be running on an Instruction Set Simulator, a technique that allows great power in its ability to halt when specific conditions are encountered but which will typically be much slower than executing the code directly on...
    s,
  • interpreters
    Interpreter (computing)

    In computer science, an interpreter normally means a computer program that execution , i.e. performs, instructions written in a programming language....
    ,
  • linker
    Linker

    In computer science, a linker or link editor is a computer program that takes one ormore object file generated by a compiler and combines them into a single executable program....
    s,
  • text editor
    Text editor

    A text editor is a type of software application used for editing plain text files.Text editors are often provided with operating systems or software development packages, and can be used to change configuration files and programming language source code....
    s,


An Integrated development environment
Integrated development environment

An integrated development environment also known as integrated design environment or integrated debugging environment is a software application that provides comprehensive facilities to computer programmers for software development....
 (IDE) is a single application that attempts to manage all these functions.

Application software

Application software
Application software

Application software is any tool that functions and is operated by means of a computer, with the purpose of supporting or improving the software user 's work....
 allows end users to accomplish one or more specific (not directly computer development related) task
Task

In common language, a task is part of a set of actions which accomplish a job, problem or assignment. Task is a synonym for activity although the latter carries a connotation of being possibly longer duration....
s. Typical applications include:
  • industrial automation
    Automation

    Automation or industrial automation or numerical control is the use of control systems such as computers to control industry machinery and industrial processes, reducing the need for human intervention....
    ,
  • business software
    Business software

    If you were looking for Software business click Software business. Business software is generally any software program that helps a business increase productivity or measure their productivity....
    ,
  • computer games
    Computer Games

    "Computer Games" is a single by New Zealand group, Mi-Sex released in 1981 . It was the single that launched the band, and was hugely popular, particularly in Australia and New Zealand....
    ,
  • telecommunication
    Telecommunication

    Telecommunication is the assisted Transmission of Signal over a distance for the purpose of communication. In earlier times, this may have involved the use of smoke signals, Drum , Semaphore line, flag signals or heliograph....
    s, (ie the internet
    Internet

    The Internet is a global network of interconnected computers, enabling users to share information along multiple channels. Typically, a computer that connects to the Internet can access information from a vast array of available server and other computers by moving information from them to the computer's local memory....
     and everything that flows on it)
  • database
    Database

    A database is a structured collection of records or data that is stored in a computer system. The structure is achieved by organizing the data according to a database model....
    s,
  • educational software
    Educational software

    Educational software is computer software, the primary purpose of which is Teacher or Learning.HistoryEarly History, 1940s - 1970s...
    ,
  • medical software
    Medical software

    In computers, medical software is a significant branch of software engineering. Many medical devices that monitor or control patients arepredominantly controlled by software....
    ,


Application software exists for and has impacted a wide variety of topics.

Software topics


Architecture

Users often see things differently than programmers. People who use modern general purpose computers (as opposed to embedded system
Embedded system

An embedded system is a special-purpose computer system designed to perform one or a few dedicated functions, often with real-time computing constraints....
s, analog computer
Analog computer

An analog computer is a form of computer that uses continuous physical phenomena such as electrical, mechanical, or hydraulic quantities to model the problem being solved....
s, supercomputer
Supercomputer

A supercomputer is a computer that is at the frontline of current processing capacity, particularly speed of calculation. Supercomputers introduced in the 1960s were designed primarily by Seymour Cray at Control Data Corporation , and led the market into the 1970s until Cray left to form his own company, Cray Research....
s, etc.) usually see three layers of software performing a variety of tasks: platform, application, and user software.
  • Platform software: Platform
    Platform (computing)

    In computing, a platform describes some sort of hardware architecture or software framework , that allows Computer software to run. Typical platforms include a computer's Computer architecture, operating system, programming languages and related runtime libraries or graphical user interface....
     includes the firmware
    Firmware

    Firmware is a term sometimes used to denote the fixed, usually rather small, programs that internally control various electronic devices. Typical examples range from end user products such as remote controls or calculators, via computer parts and devices like harddisks, keyboard s, TFT screens or memory cards, all the way to scientific instr...
    , device driver
    Device driver

    In computing, a device driver or software driver is a computer program allowing higher-level computer programs to interact with a hardware device....
    s, an operating system
    Operating system

    An operating system is an interface between hardware and applications; it is responsible for the management and coordination of activities and the sharing of the limited resources of the computer....
    , and typically a graphical user interface
    Graphical user interface

    A graphical user interface is a type of user interface which allows people to human-computer interaction such as computers; hand-held devices such as MP3 Players, Portable Media Players or Gaming devices; household appliances and office equipment....
     which, in total, allow a user to interact with the computer and its peripheral
    Peripheral

    A peripheral is a device attached to a host computer behind the chipset whose primary functionality is dependent upon the host, and can therefore be considered as expanding the hosts capabilities, while not forming part of the system's core computer architecture....
    s (associated equipment). Platform software often comes bundled with the computer. On a PC
    Personal computer

    A personal computer is any general-purpose computer whose original sales price, size, and capabilities make it useful for individuals, and which is intended to be operated directly by an end user, with no intervening computer operator....
     you will usually have the ability to change the platform software.
  • Application software: Application software
    Application software

    Application software is any tool that functions and is operated by means of a computer, with the purpose of supporting or improving the software user 's work....
     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: End-user development tailors systems to meet users' specific needs. User software include spreadsheet templates, word processor macros, scientific simulations, and scripts for graphics and animations. Even email filters are a kind of user software. Users create this software themselves and often overlook how important it is. Depending on how competently the user-written software has been integrated into default application packages, many users may not be aware of the distinction between the original packages, and what has been added by co-workers.


Documentation


Most software has software documentation
Software documentation

Software documentation or source code documentation is written text that accompanies computer software. It either explains how it operates or how to use it, and may mean different things to people in different roles....
 so that the end user can understand the program, what it does and how to use it. Without a clear documentation a software can be hard to use and especially if it is a very specialized and relatively complex software like the Photoshop, AutoCAD, etc.

Developer documentation may also exist, either with the code as comments and/or as separate files, detailing how the programs works and can be modified.

Library


A executable
Executable

In computing, an executable causes a computer "to perform indicated tasks according to encoded instruction ," as opposed to a file that only contains data ....
 is almost always not sufficiently complete for direct execution. Software libraries include collections of functions and functionality that may be embedded in other applications. Operating systems include many standard Software libraries, and applications are often distributed with their own libraries.

Standard

Since software can be designed using many different programming languages and in many different operating systems and operating environment
Operating environment

In computing, an operating environment is the environment in which users run Computer program, whether in a command-line interface, such as in MS-DOS or the Unix shell, or in a graphical user interface, such as in the Mac OS, or a web browser for web-based applications....
s, software standard is needed so that different software can understand and exchange information between each other. For instance, an email sent from a Microsoft Outlook
Microsoft Outlook

Microsoft Office Outlook or Outlook is a personal information manager from Microsoft. The 2007 version is available both as a separate application as well as a part of the Microsoft Office suite....
 should be readable from Yahoo! Mail
Yahoo! Mail

Yahoo! Mail is a Web-based email service from Yahoo!. Inaugurated in 1997, Yahoo! Mail serves over 260 million users with an astounding 67 petabyte server in the California region alone....
 and vice versa.

Execution



Computer software has to be "loaded" into the computer's storage
Computer storage

Computer data storage, often called storage or memory, refers to computer components, devices, and recording medium that retain digital data used for computing for some interval of time....
 (such as a [hard drive], memory, or RAM
Ram

Ram, ram, or RAM as a non-acronymic wordAs a non-acronymic word Ram, ram, or RAM may refer to:...
). Once the software has loaded, the computer is able to execute the software. This involves passing instructions
Instruction (computer science)

In computer science, an instruction is a single operation of a central processing unit defined by an instruction set architecture. In a broader sense, an "instruction" may be any representation of an element of an executable program, such as a bytecode....
 from the application software, through the system software, to the hardware
Hardware

Hardware is a general term that refers to the physical cultural artifacts of a technology. It may also mean the physical components of a computer system, in the form of computer hardware....
 which ultimately receives the instruction as machine code. Each instruction causes the computer to carry out an operation – moving data
Data (computing)

In computer science, data is anything in a form suitable for use with a computer. Data is often distinguished from computer programs. A program is a set of instruction that detail a task for the computer to perform....
, carrying out a computation
Computation

Computation is a general term for any type of information processing. This includes phenomena ranging from human thinking to calculations with a more narrow meaning....
, or altering the control flow
Control flow

In computer science control flow refers to the order in which the individual statement , Instruction or function calls of an imperative programming or functional programming computer program are execution or evaluated....
 of instructions.

Data movement is typically from one place in memory to another. Sometimes it involves moving data between memory and registers which enable high-speed data access in the CPU. Moving data, especially large amounts of it, can be costly. So, this is sometimes avoided by using "pointers" to data instead. Computations include simple operations such as incrementing the value of a variable data element. More complex computations may involve many operations and data elements together.

Quality and reliability


Software quality is very important, especially for commercial and system software like Microsoft Office
Microsoft Office

Microsoft Office is a popular set of interrelated desktop applications, servers and services. Microsoft Office is collectively referred to as an office suite, for the Microsoft Windows and Mac OS X operating systems....
, Microsoft Windows
Microsoft Windows

Microsoft Windows is a series of software operating systems and graphical user interfaces produced by Microsoft. Microsoft first introduced an operating environment named Windows in November 1985 as an add-on to MS-DOS in response to the growing interest in graphical user interfaces ....
, Linux
Linux

Linux is a generic term referring to Unix-like computer operating systems based on the Linux kernel. Their development is one of the most prominent examples of free and open source software collaboration; typically all the underlying source code can be used, freely modified, and redistributed by anyone under the terms of the GNU GPL license...
, etc. If software is faulty (buggy), it can delete a person's work, crash the computer and do other unexpected things. Faults and errors are called "bug
Software bug

A software bug is an error, flaw, mistake, failure, or fault in a computer program that prevents it from behaving as intended . Most bugs arise from mistakes and errors made by people in either a program's source code or its software architecture, and a few are caused by compilers producing incorrect code....
s". Many bugs are discovered and eliminated (debugged) through software testing
Software testing

Software Testing is an empirical investigation conducted to provide stakeholders with information about the quality of the product or service under test , with respect to the context in which it is intended to operate....
. However, software testing rarely – if ever – eliminates every bug; some programmers say that "every program has at least one more bug" (Lubarsky's Law). All major software companies, such as Microsoft
Microsoft

Microsoft Corporation is a multinational corporation computer technology corporation that develops, manufactures, licenses, and supports a wide range of computer software products for computing devices....
, Novell
Novell

Novell Inc. is a global software corporation based in the United States specializing in enterprise operating systems such as SUSE Linux distributions and Novell NetWare; identity, security and systems management solutions; and collaboration solutions....
 and Sun Microsystems
Sun Microsystems

Sun Microsystems, Inc. is a multinational corporation vendor of computers, computer components, computer software, and information technology services, founded on February 24, 1982....
, have their own software testing departments with the specific goal of just testing. Software can be tested through unit testing, regression testing
Regression testing

Regression testing is any type of software testing which seeks to uncover Software regression. Such regressions occur whenever software functionality that was previously working correctly stops working as intended....
 and other methods, which are done manually, or most commonly, automatically, since the amount of code to be tested can be quite large. For instance, NASA
NASA

The National Aeronautics and Space Administration is an agency of the Federal government of the United States, responsible for the nation's public list of space agencies....
 has extremely rigorous software testing procedures for its Space Shuttle
Space Shuttle

NASA's Space Shuttle, officially called the Space Transportation System , is the spacecraft currently used by the United States government for its human spaceflight missions....
 and other programs because faulty software can crash the whole program and make the vehicle not functional, at great expense.

License


The software's license gives the user the right to use the software in the licensed environment. Some software comes with the license when purchased off the shelf, or an OEM license when bundled with hardware. Other software comes with a free software license, granting the recipient the rights to modify and redistribute the software. Software can also be in the form of freeware
Freeware

Freeware is computer software that is available for use at no cost or for an optional fee. Freeware is different from shareware; the latter obliges the user to pay ....
 or shareware
Shareware

The term shareware, popularized by Bob Wallace, refers to copyrighted commercial software that is distributed without payment on a trial basis and is limited by any combination of functionality, availability, or convenience....
. See also License Management.

Patents


Software can be patented; however software patent
Software patent

Software patent does not have a universally accepted definition. One definition suggested by the Foundation for a Free Information Infrastructure is that a software patent is a "patent on any performance of a computer realised by means of a computer program"....
s can be controversial in the software industry with many people holding different views about it. The controversy over software patents is that a specific algorithm
Algorithm

In mathematics, computing, linguistics and related subjects, an algorithm is a sequence of finite instructions, often used for calculation and data processing....
 or technique that the software has cannot be duplicated by others and is considered an intellectual property
Intellectual property

Intellectual property are law property over creations of the mind, both artistic and commercial, and the corresponding fields of law. Under intellectual property law, owners are granted certain exclusive rights to a variety of intangible assets, such as musical, literary, and artistic works; ideas, discoveries and inventions; and words, phra...
 and copyright infringement
Copyright infringement

Copyright infringement is the unauthorized use of material that is covered by copyright law, in a manner that violates one of the copyright owner's exclusive rights, such as the right to reproduce or perform the copyrighted work, or to make derivative works....
 depending on the severity. Some people believe that software patent hinder software development
Software development

Software development is the set of activities that results in software products. Software development may include research, new development, modification, reuse, re-engineering, maintenance, or any other activities that result in software products....
, while others argue that software patents provide an important incentive to spur software innovation.

Ethics and rights


There is more than one approach to creating, licensing, and distributing software. For instance, the free software
Free software

Free Software or software libre is software that can be used, studied, and modified without restriction, and which can be copied and redistributed in modified or unmodified form either without restriction, or with minimal restrictions only to ensure that further recipients can also do these things and to prevent consumer-facing hardware...
 or the open source
Open source

Open source is an approach to design, development, and distribution offering practical accessibility to a product's source . Some consider open source as one of various possible design approaches, while others consider it a critical Strategy element of their business operations....
 community produces software under licensing that makes it free for inspection of its code, modification of its code, and distribution. While the software released under an open source license (such as General Public License, or GPL for short) can be sold for money, the distribution cannot be restricted in the same way as software with copyright and patent restrictions (used by corporations to require licensing fees).

While some advocates of free software use slogans such as "information wants to be free," hinting that it is easy to copy digital data and that the licenses (enforced through laws) are unnatural restrictions, other creators and users of open source software recognize it to be one model among many for software creation, licensing, and distribution. And the laws themselves are put into place for the ostensible purpose of increasing creative output, by allowing the creators to control and profit most effectively from their intellectual property.

Design and implementation

Design and implementation of a software varies depending on the complexity of the software. For instance design and creation of Microsoft Word
Microsoft Word

Microsoft Word is Microsoft's word processor computer software. It was first released in 1983 under the name Multi-Tool Word for Xenix systems....
 software will take much longer time than designing and developing Microsoft Notepad because of the difference in functionalities in each one.

Software is usually designed and created (coded/written/programmed) in integrated development environment
Integrated development environment

An integrated development environment also known as integrated design environment or integrated debugging environment is a software application that provides comprehensive facilities to computer programmers for software development....
s (IDE) like emacs
Emacs

Emacs is a class of feature-rich text editors, usually characterized by their extensibility. Emacs has, perhaps, more editing commands than any other editor or word processor, numbering over 1,000....
, xemacs
XEmacs

XEmacs is a graphical user interface- and text terminal-based text editor which runs on almost any Unix-like operating system as well as Microsoft Windows....
, Microsoft Visual Studio
Microsoft Visual Studio

Microsoft Visual Studio is an integrated development environment from Microsoft. It can be used to develop Console application and graphical user interface applications along with Windows Forms applications, web sites, web applications, and web services in both native code together with managed code for all platforms supported by Microsoft W...
 and Eclipse
Eclipse (software)

Eclipse is a multi-language software development environment comprising an Integrated development environment and a plug-in system to extend it....
 that can simplify the process and compile
Compiler

A compiler is a computer program that transforms source code written in a programming language into another computer language . The most common reason for wanting to transform source code is to create an executable program....
 the program. As noted in different section, software is usually created on top of an existing software and the application programming interface
Application programming interface

An application programming interface is a set of subroutine, data structures, class and/or Protocol provided by library and/or operating system Service s in order to support the building of applications....
 (API) that the underlying software provides like GTK+
GTK+

GTK+, or The GIMP Toolkit, is a cross-platform widget toolkit for creating graphical user interfaces. It is one of the most popular toolkits for the X Window System, along with Qt ....
, JavaBeans
JavaBeans

JavaBeans are Code reuse Component-based software engineering for Java that can be manipulated visually in a builder tool. Practically, they are classes written in the Java conforming to a particular convention....
, Swing
Swing (Java)

Swing is a widget toolkit for Java . It is part of Sun Microsystems' Java Foundation Classes — an Application programming interface for providing a graphical user interface for Java programs....
 etc. Libraries (APIs) are categorized for different purposes. For instance JavaBeans
JavaBeans

JavaBeans are Code reuse Component-based software engineering for Java that can be manipulated visually in a builder tool. Practically, they are classes written in the Java conforming to a particular convention....
 library is used for designing enterprise applications, Windows Forms
Windows Forms

Windows Forms is the name given to the graphical user interface application programming interface included as a part of Microsoft .NET Framework, providing access to the native Microsoft Windows interface elements by wrapping the existing Windows API in managed code....
 library is used for designing graphical user interface
Graphical user interface

A graphical user interface is a type of user interface which allows people to human-computer interaction such as computers; hand-held devices such as MP3 Players, Portable Media Players or Gaming devices; household appliances and office equipment....
 (GUI) applications like Microsoft Word
Microsoft Word

Microsoft Word is Microsoft's word processor computer software. It was first released in 1983 under the name Multi-Tool Word for Xenix systems....
 and Windows Communication Foundation
Windows Communication Foundation

Windows Communication Foundation, or just WCF, is a programming framework used to build applications that inter-communicate. WCF is the part of the .NET Framework dedicated to communications....
 is used for designing web services. There are also underlying concept
Concept

A concept is a cognition unit of meaning— an abstraction idea or a mental symbol sometimes defined as a "unit of knowledge," built from other units which act as a concept's characteristics....
s in computer programming
Computer programming

Computer programming is the process of writing, testing, debugging/troubleshooting, and maintaining the source code of computer programs. This source code is written in a programming language....
 like quicksort
Quicksort

Quicksort is a well-known sorting algorithm developed by C. A. R. Hoare that, average performance, makes comparisons to sort n items. However, in the Best, worst and average case, it makes comparisons....
, hashtable, array
Array

In computer science, an array is a data structure consisting of a group of element s that are accessed by index . In most programming languages each element has the same data type and the array occupies a contiguous area of computer memory....
, binary tree
Binary tree

In computer science, a binary tree is a Tree in which each node has at most two child node. Typically the child nodes are called left and right....
 that can be useful to creating a software. When a program is designed, it relies on the API. For instance, if a user is designing a Microsoft Windows
Microsoft Windows

Microsoft Windows is a series of software operating systems and graphical user interfaces produced by Microsoft. Microsoft first introduced an operating environment named Windows in November 1985 as an add-on to MS-DOS in response to the growing interest in graphical user interfaces ....
 desktop application, he/she might use the .NET
.NET Framework

The Microsoft .NET Framework is a software framework that is available with several Microsoft Windows operating systems. It includes a large Library of coded solutions to prevent common programming problems and a virtual machine that manages the execution of programs written specifically for the Software framework....
 Windows Forms library to design the desktop application and call its APIs like and to close or open the application and write the additional operations him/herself that it need to have. Without these APIs, the programmer needs to write these APIs him/herself. Companies like Sun Microsystems
Sun Microsystems

Sun Microsystems, Inc. is a multinational corporation vendor of computers, computer components, computer software, and information technology services, founded on February 24, 1982....
, Novell
Novell

Novell Inc. is a global software corporation based in the United States specializing in enterprise operating systems such as SUSE Linux distributions and Novell NetWare; identity, security and systems management solutions; and collaboration solutions....
 and Microsoft
Microsoft

Microsoft Corporation is a multinational corporation computer technology corporation that develops, manufactures, licenses, and supports a wide range of computer software products for computing devices....
 provide their own APIs so that many applications are written using their software libraries that usually have numerous APIs in them.

Software has special economic characteristics that make its design, creation, and distribution different from most other economic goods.

A title of a person that creates a software is called a programmer
Programmer

A programmer is someone who writes computer software. The term computer programmer can refer to a specialist in one area of computer programming or to a generalist who writes code for many kinds of software....
, software engineer
Software engineer

A software engineer is a person who applies the principles of software engineering to the design, development, testing, and evaluation of the software and systems that make computers or anything with software such as chips work....
, software developer
Software developer

A software developer is a person or organization concerned with facets of the software development process wider than design and coding, a somewhat broader scope of computer programming or a specialty of project manager including some aspects of Software product management....
 and code monkey
Code monkey

The term code monkey generally refers to a computer programmer or other person who writes Source code for a living. More specifically, it refers to a person only capable of grinding out code, but unable to perform the more intellectually complex tasks of software architecture, analysis, and design....
 that all essentially have a same meaning.

Industry and organizations


Software has its own niche industry that is called the software industry made up of different entities and peoples that produce software, and as a result there are many software companies and programmers in the world. Because software is increasingly used in many different areas like in finance
Finance

The field of finance refers to the concepts of time, money and risk and how they are interrelated. Banks are the main facilitators of funding through the provision of credit, although private equity, mutual funds, hedge funds, and other organizations have become important....
, searching
Searching

selfref|For searching in Wikipedia, see...
, mathematics
Mathematics

Mathematics is the study of quantity, structure, space, change, and related topics of pattern and form. Mathematicians seek out patterns whether found in numbers, space, natural science, computers, imaginary abstractions, or elsewhere....
, space exploration
Space exploration

Space exploration is the use of astronomy and space technology to explore outer space. Physical exploration of space is conducted both by human spaceflights and by robotic spacecraft....
, gaming
Gaming

While the term gaming relates to game , it usually implies participation in particular kinds of games.As used in the gamer subculture, the term can refer to participation in activities such as:...
 and mining
Mining

Mining is the extraction of value minerals or other geology materials from the earth, usually from an ore body, vein or seam. Materials recovered by mining include base metals, precious metals, iron, uranium, coal, diamonds, limestone, oil shale, Sodium chloride and potash....
 and such, software companies and people usually specialize in certain areas. For instance, Electronic Arts
Electronic Arts

Electronic Arts is an international video game developer, marketer, video game publisher and distributor of video games. Established in 1982 by Trip Hawkins, the company was a pioneer of the early home computer games industry and was notable for promoting the designers and programmers responsible for its games....
 primarily creates video games.

Also selling a software can be quite a profitable industry. For instance, Bill Gates
Bill Gates

William Henry "Bill" Gates III is an United States business magnate, philanthropist, author, the List of the 100 wealthiest people , and chairman of the board of Microsoft, the software company he founded with Paul Allen....
, the founder of Microsoft
Microsoft

Microsoft Corporation is a multinational corporation computer technology corporation that develops, manufactures, licenses, and supports a wide range of computer software products for computing devices....
 is the second richest man in the world in 2008 largely by selling the Microsoft Windows
Microsoft Windows

Microsoft Windows is a series of software operating systems and graphical user interfaces produced by Microsoft. Microsoft first introduced an operating environment named Windows in November 1985 as an add-on to MS-DOS in response to the growing interest in graphical user interfaces ....
 and Microsoft Office
Microsoft Office

Microsoft Office is a popular set of interrelated desktop applications, servers and services. Microsoft Office is collectively referred to as an office suite, for the Microsoft Windows and Mac OS X operating systems....
 software programs, and same goes for Larry Ellison
Larry Ellison

Lawrence Joseph "Larry" Ellison is an United States entrepreneur and the co-founder and CEO of Oracle Corporation, a major enterprise software company....
 largely through his Oracle database
Oracle database

The Oracle Database consists of a relational database management system produced and marketed by Oracle Corporation. , Oracle had become a major presence in database computing....
 software.

There are also many non-profit software organizations like the Free Software Foundation
Free Software Foundation

The Free Software Foundation is a non-profit corporation founded by Richard Stallman on 4 October 1985 to support the free software movement, a copyleft-based movement which aims to promote the universal freedom to distribute and modify computer software without restriction....
, GNU Project
GNU Project

The GNU Project is a free software, mass collaboration project, announced on September 27 1983 by Richard Stallman. It initiated the GNU operating system, software development for which began in January 1984....
, Mozilla Foundation
Mozilla Foundation

The Mozilla Foundation is a non-profit organization that exists to support and provide leadership for the open source Mozilla project. The organization sets the policies that govern development, operate key infrastructure and control trademarks and other intellectual property....
. Also there are many software standard organizations like the W3C, IETF and others that try to come up with a software standard so that many software can work and interoperate with each other like through standards such as XML, HTML
HTML

HTML, an Acronym and initialism of HyperText Markup Language, is the predominant markup language for Web pages. It provides a means to describe the structure of text-based information in a document?by denoting certain text as links, headings, paragraphs, lists, and so on?and to supplement that text with interactive forms, embedded '...
, HTTP, FTP, etc.

Some of the well known software companies include Microsoft
Microsoft

Microsoft Corporation is a multinational corporation computer technology corporation that develops, manufactures, licenses, and supports a wide range of computer software products for computing devices....
, IBM
IBM

International Business Machines Corporation, abbreviated IBM and nicknamed "Big Blue" , is a multinational corporation computer technology and consulting corporation headquartered in Armonk, New York, New York, United States....
, Oracle
Oracle Corporation

Oracle Corporation specializes in developing and marketing enterprise software products ? particularly database management systems. Through organic growth and a number of high-profile acquisitions, Oracle enlarged its share of the software market....
, Novell
Novell

Novell Inc. is a global software corporation based in the United States specializing in enterprise operating systems such as SUSE Linux distributions and Novell NetWare; identity, security and systems management solutions; and collaboration solutions....
, SAP
SAP AG

SAP Aktiengesellschaft is the largest European software enterprise and the fourth largest in the world, with headquarters in Walldorf, Germany....
, HP, etc.

See also

Lists
  • List of basic computer programming topics
    List of basic computer programming topics

    Computer programming is a subfield of computer science.This is not a list of topics about the BASIC programming language. The following outline is provided as an overview of and introduction to computer programming:...
  • List of computer programming topics
    List of computer programming topics

    Computer programming is a subfield of computer science. See also the List of basic computer programming topics....
  • Origins of computer terms
    List of computer term etymologies

    This is a list of the origins of computer-related terms or terms used in the computing world . It relates to both computer hardware and computer software....
Types of software
  • Custom Software
    Custom software

    Custom software is a type of software that is custom software development either for a specific organization or function that differs from or is opposite of other already available software ....
  • Free software
    Free software

    Free Software or software libre is software that can be used, studied, and modified without restriction, and which can be copied and redistributed in modified or unmodified form either without restriction, or with minimal restrictions only to ensure that further recipients can also do these things and to prevent consumer-facing hardware...
  • Freeware
    Freeware

    Freeware is computer software that is available for use at no cost or for an optional fee. Freeware is different from shareware; the latter obliges the user to pay ....
  • Open source software
  • Proprietary software
    Proprietary software

    Proprietary software is a term coined by advocates of the free software movement to describe computer software which is the legal property of one party....
  • Scientific software
    Scientific software

    A Computer software or Computer program is called scientific, if the subject it addresses is scientific.Even if deep knowledge is needed for the creation of a particular software, this alone makes it not necessarily scientific....
  • Shareware
    Shareware

    The term shareware, popularized by Bob Wallace, refers to copyrighted commercial software that is distributed without payment on a trial basis and is limited by any combination of functionality, availability, or convenience....
Related subjects
  • Software as a Service
    Software as a Service

    Software as a Service is a model of software deployment where an application is licensed for use as a service provided to customers on demand. On demand licensing and use alleviates the customer's burden of equipping a device with every application....
  • Software development process
    Software development process

    A software development process is a structure imposed on the development of a software product. Synonyms include Software_Lifecycle_Processes and software process....
  • Software ecosystem
    Software ecosystem

    A Software Ecosystem is set of businesses functioning as a unit and interacting with a shared market for software and services, together with relationships among them....
  • Software industry
    Software industry

    The software industry includes businesses involved in the software development, software maintenance and software publisher of computer software using any business model....
  • Software license