A programming model that takes general purpose APIs and machine-generates
new programming models based on user defined schemas that provide the
developer with data and view separation, and a way to communicate to the
host application using the domain of the problem being solved. The system
comprises a schema component that the developer uses to define a schema
that includes one or more domain terms related to the problem to be
solved, and a mapping component that uses the schema to search and map
selected constructs from one or more generic host application APIs to the
corresponding problem domain terms. Once the mapping is completed, a
generating component generates a new API that is used by a host
application to facilitate developing an application document using terms
related to the domain of the problem to be solved.