Software enables computer hardware to perform specific tasks. Software, commonly known as programs or applications, consists of all the electronic instructions that tell the hardware how to perform a task. The program you're using right now to view Wikiversity is a type of program called a browser. A browser contains all the instructions that tell your computer how to display a web site. Software is capable of performing many different specific tasks, as opposed to hardware which only perform mechanical tasks that they are designed for.
There are three major types of software that most computer users are aware of:

Software that assists a programmer in writing more computer software. Computer programs are often large and complex which makes them hard to design, create and maintain. In addition computer hardware can only execute computer instructions encoded as 1's and 0's (binary). Programming software tools makes it easier to create programs and maintain them. One of the most important tools is a compiler that takes a computer program written in a high level language, such as C, Java or Haskell, and translates to binary instructions for the computer hardware.

Software that runs on small computers inside other machines, for instance washing machines, cars or medical equipment. These type of programs usually have access to fewer resources (memory, networking, processor power, disk storage etc) and do not have a user interface. However as computer hardware and networking technology becomes cheaper, and smaller, embedded computers are becoming connected together more and more. This is popularly referred to as the "Internet of Things"

Server Software:

Server programs run on larger centrally located machines. For instance a bank might have millions of customer records stored in a server database. A client machine (for instance a program running on a desktop computer) might send a search request for a specific customer account. The server will perform the search and return any data found. Server programs can be created to perform a variety of functions that require the processing of large amounts of information or performing a large number of computational processes.

A software license (or software licence in commonwealth usage) is a legal instrument (usually by way of contract law) governing the usage and/or redistribution of software. All software is copyright protected, except material in the public domain. Contractual confidentiality is another way of protecting software. A typical software license grants an end-user permission to use one or more copies of software in ways where such a use would otherwise potentially constitute copyright infringement of the software owner's exclusive rights under copyright law.

Some software comes with the license when purchased off the shelf or an OEM license when bundled with hardware. Software can also be in the form of freeware or shareware. Software licenses can generally be fit into the following categories: proprietary licenses and free and open source licenses, which include free software licenses and other open source licenses. The features that distinguishes them are significant in terms of the effect they have on the end-user's rights.

A free open source license makes software free for inspection of its code, modification, and distribution. Some free licenses, such as the GNU General Public License (GPL), allow the product and/or derivative to be commercially sold.