Software can be thought of as the variable part of a computer and hardware the invariable part. Software is often divided into application software (programs that do work users are directly interested in) and system software (which includes operating systems and many programs). The term middleware is sometimes used to describe programming that mediates between application and system software or between two different kinds of application software (for example, converting data from one file format to another file format).