The model manages the application data and the state. Among its responsibilities is the processing of data to and from a data store, such as a database. A model is independent of the controllers and the views, allowing them to be reused with different user interfaces. This also allows them to be tested independently.
Models receive directives from controllers to retrieve and update data. Models also provide application state updates. In some variations of MVC, the model is passive and must receive a request to send out an application state update. In other variations, a view may be active and push notifications of model state changes to a view.