A software is a means of communication between the computer system  and computer users. It is the operating system and applications that are  used in computers. Basically, it is the collection of computer programs,  documentation and procedures performing several tasks on a computer  system. Thus, it is considered to be the heart of computer systems. 

Generally, computer software consists of a machine language consisting of  groups of binary values, specifying the processor instructions. The  instructions change the state of computer hardware in a sequence that is  predetermined. In conclusion, a computer system is a language in which a  computer speaks.

There are 3 types of computer software. They are: 

  1. System Software
  2. Application Software
  3. Programming Software

1. System Software

It is a collection of operating systems, servers, device drivers, utilities and  windows systems which helps in running the computer hardware and the  computer system. It is designed to provide a platform to run application  software and operate the computer hardware. 

This software helps an application programmer to view away memory,  hardware and other internal complexities of a computer. Some of its  common types are: 

i) Operating system

From performing basic tasks to running important programs, the operating  system is the most important program to run a computer. It is the  1st program that loads into memory when the computer is turned on.  Without the operating system, no other programs such as spreadsheet 

software, word processing software, etc. can be run. So, in a sense, this  system brings the computer to life. 

When given a command, the operating system issues the instructions to  the ‘brain’ i.e. the CPU or microprocessor. While working on the application  software, such as Microsoft Word, your given commands are sent through  the operating system to the CPU.

Some of its examples are Windows2000,  Windows95/98, DOS, UNIX, Mac OS, etc. Below are some of its functions. 

  • Provide security and backup. 
  • Booting computers. 
  • Controlling peripheral devices such as a keyboard, disk drives,  printers, etc. 
  • Provide interface between software and hardware. 
  • Scheduling processes. 
  • Memory management. 
  • Keeping track of files and directories on the disk. 
  • Recognize input from the keyboard. 
  • Send output to the display screen. 

ii) Utility Software

Utility software are set of collective programs, available to help you with the  day to day chores that are associated with personal computing and to keep  your computer system run at peak performance. These are designed to  help manage, control and maintain computer resources. 

Some examples of utility software are: 

Virus scanning Software / Antivirus: It protects computers from  computer viruses.

Scandisk: It scans disks for any potential problems on them, such as  bad disk areas or any physical error. 

Backup software: It helps in making copies of your files and even an  entire computer hard drive for backup and restoration. 

Debuggers: These are used mainly to solve programming errors.

Disk Defragmenter software: It assists you in reorganizing those  disk drives which have been scattered across several hard disk  locations while files are saved, deleted and resaved again.

File managers: They provide you a convenient method to perform  routine data management, management tasks and e-mail recovery.

iii) Language processor

It is a special kind of computer software which translates the programs  written in one language into another language. It is compulsory for both low  and high-level language. The types of language translators are: 

  1. Compiler 
  2. Interpreter 
  3. Assembler 

2) Application Software

Application software is used to solve application type of problems.  Business software, educational software and databases are some forms of  application software. This software enables the users to accomplish certain  specific tasks and utilizes the capacities of a computer directly to a  dedicated task. It can manipulate numbers, texts and graphics. It can also  focus on a certain single task like work processing, spreadsheet or playing  of audio and video files. Its types are: 

i) Package software:

Package software is for general purposes. Designed by software  companies, it is mainly to generalize the tasks. Some common package  software are: 

Word Processing Software: This software enables the users in creating  and editing documents. MS-Word, Notepad, Word pad and some other text  editors are some most popular examples of Word Processing Software.

Database Software: It organizes the data and enables the users to achieve  database operations. It also allows the users to store and retrieve data from  databases. MS Access, Oracle, etc. are its examples. 

Spreadsheet Software: By displaying multiple cells that make up a grid,  this software simulates paper worksheets and allows the users to perform  calculations. Its examples are Apple Numbers, Excel, Lotus 1-2-3, etc.

Multimedia Software: This software allows the users to create and play  audio and video media. Audio converters, burners, players, video encoders  and decoders are some forms of it. Real Player and Media Player are  examples of this software. 

Presentation Software: This software is best used to display information in  the form of a slide show. It includes 3 functions. 

  1. Editing, allowing insertion and formatting of text. 
  2. A functionality of executing the slide shows. 
  3. Methods to include graphics in the text. 

Microsoft Power Point is its best example. 

ii) Tailored software: 

Tailored Software is also called small type of software. Tailored software is  for specific purposes. Written in high-level languages such as C, JAVA,  C++, COBOL (Common Business Oriented language), etc. these types of 

software are developed for a specific task. Banking software, hotel  reservation software, hospital software, billing software, etc. are its  examples. 

3. Programming Software

It includes tools in the form of programs or applications that software developers take in use to create, debug, maintain and support other programs and applications. Compiler, debugger, interpreter, linker and text editor are the parts programming software.

1. Compiler

They convert a high level language program into a low-level language program.

2. Assembler

They convert an assembly language program into low-level language programs.

3. Interpreter

It processes high-level language line by line and simultaneously produces low-level programs.

4. Linker

Most low-level languages allow the developer to develop a large program containing multiple modules. Linker arranges the object code of all the modules that have been generated by the language translator into a single program.

5. Debugger

It is a software that is used to detect the errors and bugs in programs. It locates the position of errors in the program codes.

6. Text editor

It is a program that allows the user to work with texts in a computer system. It is used for documentation purpose and enables us to edit information present in an existing document or file.
Example: C, C++, C#, BASIC, Java, Python, etc.