The part of an application that stores and manipulates data. It receives its instructions and input from and sends its output to the application’s front end, which is responsible for interacting with the user. Separating the two has advantages: for example, it is often necessary to tweak the front end in response to user feedback, and it is convenient to do this in the knowledge that the back end will continue to work unchanged. However, the rigidity with which this separation is implemented varies between applications.