Computer software, or just software, is any set of machine-readable instructions (most often in the form of a computer program) that directs a computer's processor to perform specific operations. The term is used to contrast with computer hardware, the physical objects (processor and related devices) that carry out the instructions. Hardware and software require each other; neither has any value without the other.
Firmware is software that has been permanently stored in hardware (specifically in non-volatile memory). It thus has qualities of both software and hardware.
Software is a general term. It can refer to all computer instructions in general or to any specific set of computer instructions. It is inclusive of bothmachine instructions (the binary code that the processor understands) and source code (more human-understandable instructions that must be rendered into machine code by compilers or interpreters before being executed).
On most computer platforms, software can be grouped into two broad categories: System software is the basic software needed for a computer to operate (most notably the operating system). Application software is all the software that uses the computer system to perform useful work beyond the operation of the computer itself. (A third category, embedded software, resides as firmware within embedded systems, devices dedicated to a single use. In that context