|
Links
|
Computer
Software Computer Software is a general term used to describe a
collection of computer programs, procedures and documentation that perform
some tasks on a computer system.[1] The term includes application software
such as word processors which perform productive tasks for users, system
software such as operating systems, which interface with hardware to provide
the necessary services for application software, and middleware which controls
and co-ordinates distributed systems Terminology
The term "software" is sometimes used in a
broader context to describe any electronic media content which embodies
expressions of ideas such as film, tapes, records, etc.
Relationship to Computer Hardware
Computer
software is so called to distinguish it from computer hardware, which
encompasses the physical interconnections and devices required to store and
execute (or run) the software. In computers, software is loaded into RAM and
executed in the central processing unit. 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 languages that are easier and more efficient for
humans to use (closer to natural language) than machine language. High-level
languages are compiled or interpreted into machine language object code.
Software may also be written in an assembly language, essentially, a mnemonic
representation of a machine language using a natural language alphabet.
Assembly language must be assembled into object code via an assembler. The
term "software" was first used in this sense by John W. Turkey in
1958.[3] In computer science and software
engineering, computer software is all computer programs. The theory that is
the basis for most modern software was first proposed by Alan Turing in his
1935 essay Computable numbers with an application to the Entscheidungs
problem Practical computer systems divide software systems into three major classes: system software, programming software and application software, although the distinction is arbitrary, and often blurred.
Program and Library
A program may not be sufficiently complete for
execution by a computer. In particular, it may require additional software
from a software library in order to be complete. Such a library may include
software components used by stand-alone programs, but which cannot work on
their own. Thus, programs may include standard routines that are common to
many programs, extracted from these libraries. Libraries may also include
'stand-alone' programs which are activated by some computer event and/or
perform some function (e.g., of computer 'housekeeping') but do not return
data to their calling program. Libraries may be called by one to many other
programs; programs may call zero to many other
programs.
Three Layers
Starting in the
1980s, application software has been sold in mass-produced packages through
retailers. Users
often see things differently than programmers. People who use modern general
purpose computers (as opposed to embedded systems, analog computers,
supercomputers, etc.) usually see three layers of software performing a
variety of tasks: platform, application, and user software. Platform Software Platform
includes the firmware, 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. On a PC you will usually have the ability to
change the 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 user’s 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 purchased application
packages, many users may not be aware of the distinction between the
purchased packages, and what has been added by fellow co-workers. Operation
Computer software has to be
"loaded" into the computer's storage (such as a hard drive, memory,
or RAM). Once the software has loaded, the computer is able to execute 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 control flow 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. Instructions may be performed
sequentially, conditionally, or iteratively. Sequential instructions are
those operations that are performed one after another. Conditional
instructions are performed such that different sets of instructions execute
depending on the value(s) of some data. In some languages this is known as an
"if" statement. Iterative instructions are performed repetitively
and may depend on some data value. This is sometimes called a
"loop." Often, one instruction may "call" another set of
instructions that are defined in some other program or module. When more than
one computer processor is used, instructions may be executed simultaneously. A simple example of the way
software operates is what happens when a user selects an entry such as
"Copy" from a menu. In this case, a conditional instruction is
executed to copy text from data in a 'document' area residing in memory,
perhaps to an intermediate storage area known as a 'clipboard' data area. If
a different menu entry such as "Paste" is chosen, the software may
execute the instructions to copy the text from the clipboard data area to a
specific location in the same or another document in memory. Depending on the application,
even the example above could become complicated. The field of software
engineering endeavors to manage the complexity of how software operates. This
is especially true for software that operates in the context of a large or
powerful computer system. Currently, almost the only
limitations on the use of computer software in applications are the ingenuity
of the designer/programmer. Consequently, large areas of activities (such as
playing grand master level chess) formerly assumed to be incapable of
software simulation are now routinely programmed. The only area that has so
far proved reasonably secure from software simulation is the realm of human
art— especially, pleasing music and literature. Kinds of software by operation: computer program
as executable, source code or script, configuration.
Quality and Reliability
Software reliability considers
the errors, faults, and failures related to the creation and operation of
software. License
Software 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 or shareware. See also License Management.
Patents
The issue of software patents
is controversial. Some believe that they hinder software development, while
others argue that software patents provide an important incentive to spur
software innovation. See software patent debate. Ethics and Rights for Software Users
Being a new part of society,
the idea of what rights users of software should have is not very developed.
Some, such as the free software community, believe that software users should
be free to modify and redistribute the software they use. They argue that
these rights are necessary so that each individual can control their
computer, and so that everyone can cooperate, if they choose, to work
together as a community and control the direction that software progresses
in. Others believe that software authors should have the power to say what
rights the user will get. The former philosophy is
somewhat derived from the "hacker ethic" that was common in the 60s
,70s and mid 80s. |