1. A method of providing a user interface for an application, the method comprising: identifying a user interface template that implements a task pattern for a model class; identifying a model adapter that provides an interface for the application that conforms to the model class; and creating a user interface for the application from the identified user interface template and the identified model adapter; wherein the user interface template defines an abstract portlet; and wherein creating a user interface comprises creating a portlet instance that communicates with the application via the model adapter.