Major types of software
Software, by definition, is the collection of computer programs, procedures and documentation that performs different tasks on a computer system. The term 'software' was first used by John Tukey in 1958. At the very basic level, computer software consists of a machine language that comprises groups of binary values, which specify processor instructions. The processor instructions change the state of computer hardware in a predefined sequence. Briefly, computer software is the language in which a computer speaks. There are different types of computer software. What are their major types? Let us see.

Programming Software: This is one of the most commonly known and popularly used types of computer software. These software come in the form of tools that assist a programmer in writing computer programs. Computer programs are sets of logical instructions that make a computer system perform certain tasks. The tools that help programmers in instructing a computer system include text editors, compilers and interpreters. Compilers translate source code written in a programming language into the language which a computer understands (mostly the binary form). Compilers generate objects which are combined and converted into executable programs through linkers. Debuggers are used to check code for bugs and debug it. The source code is partially or completely simulated for the debugging tool to run on it and remove bugs if any. Interpreters execute programs. They execute the source code or a precompiled code or translate source code into an intermediate language before execution.

System Software: It helps in running computer hardware and the computer system. System software refers to the operating systems; device drivers, servers, windowing systems and utilities. System software helps an application programmer in abstracting away from hardware, memory and other internal complexities of a computer. An operating system provides users with a platform to execute high-level programs. Firmware and BIOS provide the means to operate hardware.

Application Software: It enables the end users to accomplish certain specific tasks. Business software, databases and educational software are some forms of application software. Different word processors, which are dedicated to specialized tasks to be performed by the user, are other examples of application software.

Malware: Malware refers to any malicious software and is a broader category of software that are a threat to computer security. Adware, spyware, computer viruses, worms, trojan horses and scareware are malware. Computer viruses are malicious programs which replicate themselves and spread from one computer to another over the network or the Internet. Computer worms do the same, the only difference being that viruses need a host program to attach with and spread, while worms don't need to attach themselves to programs. Trojans replicate themselves and steal information. Spyware can monitor user activity on a computer and steal user information without their knowledge.

Adware: Adware is software with the means of which advertisements are played and downloaded to a computer. Programmers design adware as their tool to generate revenue. They do extract user information like the websites he visits frequently and the pages he likes. Advertisements that appear as pop-ups on your screen are the result of adware programs tracking you. But adware is not harmful to computer security or user privacy. The data it collects is only for the purpose of inviting user clicks on advertisements.

There are some other types of computer software like inventory management software, ERP, utility software, accounting software among others that find applications in specific information and data management systems. Let's take a look at some of them.

Inventory Management Software: This type of software helps an organization in tracking its goods and materials on the basis of quality as well as quantity. Warehouse inventory management functions encompass the internal warehouse movements and storage. Inventory software helps a company in organizing inventory and optimizing the flow of goods in the organization, thus leading to improved customer service.

Utility Software: Also known as service routine, utility software helps in the management of computer hardware and application software. It performs a small range of tasks. Disk defragmenters, systems utilities and virus scanners are some of the typical examples of utility software.

Data Backup and Recovery Software: An ideal data backup and recovery software provides functionalities beyond simple copying of data files. This software often supports user needs of specifying what is to be backed up and when. Backup and recovery software preserve the original organization of files and allow an easy retrieval of the backed up data.

Types of Software and their Licensing

A software license determines the way in which that software can be accessed and used. Depending on the software licensing, the end users have rights to copy, modify or redistribute the software. While some software have to be bought, some are available for free on the Internet. Some licenses allow you to use, copy and distribute the software while others allow only one of the three operations. In some software, the source code is made available to the end users, while in others it is not. Here we will see the ways in which different types of software are distributed to users.

Custom Software: Software that is developed for a specific user or organization is custom software. Since it is built for a specific user, its specifications and features are in accordance with the user's needs.

Off-the-Shelf Software: As opposed to custom software, off-the-shelf software is standard software bought off the shelf. It has predefined specifications that may or may not cater to any specific user's requirements. When you buy it, you agree to its license agreement.

Free Software: Software that a user is free to use, modify and distribute is known as free software. Free software generally comes free of cost but charges may be involved in distribution, servicing and maintenance. The term free refers to freedom of copying, distributing and modifying.

Open Source and Closed Source Software: In a closed source model, the source code is not released to public, while the source code is available for modification and use in open source software. Open source software is available in its source code form and the rights to change, improve and sometimes distribute its code are given under a software license. Software developed by an individual or an organization, where the source code is closed from public (not available openly) is referred to as closed source software.

Proprietary Software: In proprietary software, legal rights remain exclusively with the copyright holder. Most proprietary software are available in the closed source form. Some vendors distribute proprietary software source code to the customers, however, with restricted access. Proprietary software is provided as shareware or demoware wherein users do not have to pay for use and it is distributed as trialware. There are no packaging costs involved. However the programmer may ask you to pay a small fee after which you are entitled to receive assistance and updates of that software.

Shareware and Retail Software: While shareware is provided as a trial version to users, retail software is sold to end users. With the increasing availability of shareware and freeware on the web, the retail market is changing. Developers and vendors have started offering their software over the Internet. At times, shareware is made available as crippleware, wherein its main features do not work after the trial period has ended. In other words, such shareware has to be purchased to enable its crippled features. Though shareware is a very popular form in which software is distributed, retail software is not obsolete. Microsoft Office, for example, is a retail software package that has to be bought. Retail software may be given as an Original Equipment Manufacturer (OEM) Pack. Here, the software developer gives a licensed copy of the software to a computer manufacturer who installs it on computers before they are sold. In the Box Pack form, a licensed copy of the software is bought from an authorized retail outlet.

This was an overview of the major types of software and their ways of distribution. Computer software are widely popular today and we cannot imagine computers without them. We would not have been able to use computers with so much ease, if not for software. What is fascinating about computers is that they have their own languages and their own ways of communicating with us humans. And their means to communicate are these different types of computer software.