Computer software can be a rather vague concept to those who are not familiar with programming. One way to look at it is contrasting it with the hardware, which stands for the physical components of a computer; monitor, mouse, keyboard, peripherals, etc. Software, on the other hand, is comprised of computer programs, such as operating systems, that basically tell a computer what to do and how to go about it. Other instances of computer software are application software (word processors or video games), middleware controls, programming languages which determine the syntax and semantics, testware, firmware, device drivers which control certain parts of a computers like disk and CD drives, and programming tools.
The three main software categories are system software, programming software and application software. System software operates the hardware and supplies an application software running platform. The simplest system software types are the computer basic input/output system (BIOS), the operating system and the utility software. Other types include loaders, linkers, shells, boot loaders and database management systems.
Programming software is used to develop a series of tools that provide general support to other programs and applications. Some of these tools are performance analysis tools, debugging tools, static analysis and formal verification tools, correctness checking tools, memory usage tools, application tools and integrated development environments.
Application software is meant to help the user accomplish a single specific task, or many related ones. This is probably the broadest category of software and encompasses a wide variety of programs including, but not limited to, business software, computer aided design, databases, decision making software, educational software, image editing, industrial automation, mathematical software, medical software, molecular modeling software, simulation, software, spreadsheets, video games, word processing, and media players. This software may be applied in many different fields, like entertainment, education, content access, and media development.