Software is a generic term for organized collections of computer data and
instructions, often broken into two major categories: system software that
provides the basic non-task-specific functions of the computer, and
application software used to accomplish specific user-oriented tasks.
System Software
System software is responsible for controlling, integrating, and managing
the individual hardware components of a computer system so that other
software and the users of the system see it as a functional unit without
having to be concerned with the low-level details such as transferring data
from memory to disk, or rendering text onto a display. Generally, system
software consists of an operating system and some fundamental utilities such
as disk formatters, file managers, display managers, text editors, user
authentication (login) and management tools, and networking and device
control software.
Application Software
Application software, on the other hand, is used to accomplish specific
tasks other than just running the computer system. Application software may
consist of a single program, such as an image viewer; a small collection of
programs (often called a software package) that work closely together to
accomplish a task, such as a spreadsheet or text processing system; a larger
collection (often called a software suite) of related but independent
programs and packages that have a common user interface or shared data
format, such as Microsoft Office, which consists of closely integrated word
processor, spreadsheet, database, etc.; or a software system, such as a
database management system, which is a collection of fundamental programs
that may provide some service to a variety of other independent applications.
Software Creation
Software is created with programming languages and related utilities, which
may come in several of the above forms: single programs like script
interpreters, packages containing a compiler, linker, and other tools; and
large suites (often called Integrated Development Environments) that include
editors, debuggers, and other tools for multiple languages.
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.