Computer software, or just software, is a general term primarily used for digitally stored data such as computer programs and other kinds of information read and written by computers. Today, this includes data that has not traditionally been associated with computers, such as film, tapes and records. The term was coined in order to contrast to the old term hardware (meaning physical devices); in contrast to hardware, software is intangible, meaning it "cannot be touched". Software is also sometimes used in a more narrow sense, meaning application software only.
- Application software, sometimes called Apps on mobile devices, such as word processors which perform productive tasks for users.
- Firmware, which is software programmed resident to electrically programmable memory devices on board motherboards or other types of integrated hardware carriers. It will not be erased if power is lost. Sometimes Firmware is distinguished by its use to control or replace hardware.
- Middleware, which controls and co-ordinates distributed systems.
- System software such as operating systems, which govern computing resources and provide convenience for users.
- Software testing is a domain independent of development and programming. Software testing consists of various methods to test and declare a software product fit before it can be launched for use by either an individual or a group.
- Testware, which is an umbrella term or container term for all utilities and application software that serve in combination for testing a software package but not necessarily may optionally contribute to operational purposes. As such, testware is not a standing configuration but merely a working environment for application software or subsets thereof.
- Video games (except the hardware part)
Information is stored in files on a computer. These files may contain either programs or data. It is also possible that a file can have both a program and embedded data. A computer recognizes a program, which is called an executable, and runs, executes, it. The program may load data files when needed.
There are two basic types for data that is used on a computer. The first is human readable, meaning the data can be view simply by viewing it on a screen or printing it out. The only program that is needed is simply to read the characters from the file and display them on the screen. The form is usually called text. The second type of data is called binary. At least a portion of the data is in pure binary form. Binary data needs a program that recognizes the binary itself. A Word file is typically a binary file and needs a special Word processor that understands the format of the information to extract it and display it.
In addition there are many kinds of data in use on a computer. There might be a word file, an eBook file, a spread sheet, and many other types or formats. There is even data about the data which is called metadata. The most flexible format is binary.
 Software Languages
Like the term software itself Software languages has also grown to encompass many different forms. Originally it was used to describe Programming Languages but today it can mean any source format used to describe software content. A software language is often in the form of a markup language in which delimited tags are used to describe content. Examples of software languages include HTML, RTF, CSS and many others. These software languages are termed source code as they are human readable although the interpretation may be difficult if the source was generated by the computer itself. For eBooks this is often called the source format. However, all are defined in terms of prescribed syntax and semantics.
Like computer programs the source files of many software languages are either interpreted by a special program or converted (compiled) to a binary form to be used by a program designed for the purpose. EBooks are said to be placed in an eBook format to be read by an eBook Reading program (application program) or device. The set of source files for an eBook may be compiled into a binary form or compressed (for example ZIPped to make it one file that is smaller than the source.