 |
| |
 |
QUICK START |
|
|
|
| |
 |
ABOUT SOFTWARE |
|
|
|
|
|
| |
|
ABOUT SOFTWARE DEVELOPMENT
|
| Computer
software
Software fundamentally is the unique image or representation
of physical or material alignment that constitutes configuration
to or functional identity of a machine, usually a computer.
As a content of memory, software in principle can be
changed without the adjustment to the static paradigm
of the hardware thus without the remanufacturing thereof.
Commonly software is of an algorithmic form which translates
into being to a sequence of machine instructions. Some
software, however, is of a relational form which translates
into being the map of a realization network (see VHDL).
Software is a program that enables a computer to perform
a specific task, as opposed to the physical components
of the system (hardware). This includes application
software such as a word processor, which enables a user
to perform a task, and system software such as an operating
system, which enables other software to run properly,
by interfacing with hardware and with other software.
The term "software" was first used in this sense by
John W. Tukey in 1957. In computer science and software
engineering, computer software is all computer programs.
The concept of reading different sequences of instructions
into the memory of a device to control computations
was invented by Charles Babbage as part of his difference
engine. The theory that is the basis for most modern
software was first proposed by Alan Turing in his 1935
Computer software is so called in contrast to 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 (object code), 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.
Relationship to data
Software has historically been considered an intermediary
between electronic hardware and data, which latter entity
the hardware processes according to the sequence of
instructions defined by the software. As computational
math becomes increasingly complex, the distinction between
software and data becomes less precise. Data has generally
been considered as either the output or input of executed
software. However, data is not the only possible output
or input. For example, (system) configuration information
may also be considered input, although not necessarily
considered data (and certainly not applications data).
The output of a particular piece of executed software
may be the input for another executed piece of software.
Therefore, software may be considered an interface between
hardware, data, and/or (other) software.
Types
Practical computer systems divide software into three
major classes: system software, programming software
and application software, although the distinction is
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. The purpose of systems software
is to insulate the applications programmer as much as
possible from the details of the particular computer
complex being use, especially memory and other hardware
features, and such accessory devices as communications,
printers, readers, displays, keyboards, etc.
Programming software usually provides tools to assist
a programmer in writing computer programs and software
using different programming languages in a more convenient
way. The tools include text editors, compilers, interpreters,
linkers, debuggers, and so on. An Integrated development
environment (IDE) merges those tools into a software
bundle, and a programmer may not need to type multiple
commands for compiling, interpreter, debugging, tracing,
and etc., because the IDE usually has an advanced graphical
user interface, or GUI.
Application software allows humans to accomplish one
or more specific (non-computer related) tasks. Typical
applications include industrial automation, business
software, educational software, medical software, databases
and computer games. Businesses are probably the biggest
users of application software, but almost every field
of human activity now uses some form of application
software. It is used to automate all sorts of functions.
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 be executed
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 activating program.
Programs may be called by other programs and/or may
call other programs.vb
Three layers
Starting in the 1980s, application software has been
sold in mass-produced packages through retailersUsers
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 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. 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 (also known as memory and RAM).
Once the software is 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 know 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 is the ingenuity of
the designer/programmer. Consequently, large areas of
activities (such as playing grand master level chess)
formerly assumed to 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 OEM license when bundled with hardware. Software
can also be in the form of freeware or shareware.
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.
From
Wikipedia
|
| |